若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/112871383
长期继续带来更多我的项目与技术分享,征询请加 QQ:21497936、微信:yangsir198808
红瘦子 (红模拟) 的博文大全:开发技术汇合(蕴含 Qt 实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬联合等等)继续更新中…(点击传送门)
Qt 开发专栏:三方库开发技术
上一篇:《地图开发笔记(一):百度地图介绍、应用和 Qt 内嵌地图 Demo》
下一篇:继续更新 …
前言
Qt 要与百度地图交互,百度地图提供的 JS,那么交互就是 Qt 与 JS 交互,本章 Qt 向 JS 交互发送指令。
Demo
Qt 管制 JS
Qt 管制 JS 绝对界面,间接应用 QWebEnginePage 的 runJavaScript 接口即可,函数接口如下:
void runJavaScript(const QString& scriptSource);
void runJavaScript(const QString& scriptSource, quint32 worldId);
void runJavaScript(const QString& scriptSource, const QWebEngineCallback<const QVariant &> &resultCallback);
void runJavaScript(const QString& scriptSource, quint32 worldId, const QWebEngineCallback<const QVariant &> &resultCallback);
- 参数一:执行的 js 脚本内容
其余参数请自行查看。
百度地图 API
设置中心点和缩放等级
示例
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.331398,39.897445);
map.centerAndZoom(point,12);
定位以后所在的城市
LocalCity 定位类
LocalCityOptions 该类应用回调函数传回后果
LocalCityResult 定位后果的后果类形容
示例
function myFun(result){
var cityName = result.name;
map.setCenter(cityName);
alert("以后定位城市:"+cityName);
}
var myCity = new BMap.LocalCity();
myCity.get(myFun);
设置地图缩放等级
外围类 Map
示例
map.setZoom(13)
定位指定的城市
外围类 Map
示例
map.setCenter(“长沙市”)
Demo 要害代码
void BaiDuMapWidget::locateCurrentPos()
{_pWebEnginePage->runJavaScript(QSTRING("var geolocation = new BMap.Geolocation();"
"geolocation.enableSDKLocation();"
"geolocation.getCurrentPosition(function(r){"
"if(this.getStatus() == BMAP_STATUS_SUCCESS){"
"var mk = new BMap.Marker(r.point);"
"map.addOverlay(mk);"
"map.panTo(r.point);"
"alert('%1'+r.point.lng+','+r.point.lat);"
"}"
"else {"
"alert('%2'+this.getStatus());"
"}"
"});").arg(QSTRING("您的地位")).arg(QSTRING("定位失败,错误码:")));
}
void BaiDuMapWidget::locateProvince(QString province)
{_pWebEnginePage->runJavaScript(QSTRING("map.setZoom(9);"
"map.setCenter('%1')").arg(province));
}
void BaiDuMapWidget::locateCity(QString city)
{_pWebEnginePage->runJavaScript(QSTRING("map.setZoom(13);"
"map.setCenter('%1')").arg(city));
}
入坑
入坑一:中文乱码问题
问题
解决
一开始输出的,从原头就须要退出 QString::fromLocal8bit,如下图:
入坑二:百度地图获取浏览器本地定位超时(暂未解决)
问题
入坑三:调用一些函数有效
起因
Js 是脚本语言,当调用时,后面有谬误前面的就不会执行。
解决
找到未起作用的中央,看是否真的调用到了,应用 alert 弹出框查看。
上一篇:《地图开发笔记(一):百度地图介绍、应用和 Qt 内嵌地图 Demo》
下一篇:继续更新 …
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/112871383