地图开发笔记(二):Qt与百度地图js交互的基础-Qt向Js发送指令定位各大省份与城市

简介: 地图开发笔记(二):Qt与百度地图js交互的基础-Qt向Js发送指令定位各大省份与城市

前言

  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));
}


工程模板:v1.1.0

  mapDemo_v1.1.0_基础模板_定位本地_定位省份_定位城市.rar

  CSDN下载地址:https://download.csdn.net/download/qq21497936/85460773


入坑

入坑一:中文乱码问题

问题

  

解决

  一开始输入的,从原头就需要加入QString::fromLocal8bit,如下图:

  

  

  

  

入坑二:百度地图获取浏览器本地定位超时(暂未解决)

问题

  

入坑三:调用一些函数无效

原因

  Js是脚本语言,当调用时,前面有错误后面的就不会执行。

解决

  找到未起作用的地方,看是否真的调用到了,使用alert弹出框查看。

相关文章
|
7月前
|
安全 数据处理 C++
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
1569 3
|
1月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
181 77
|
5月前
|
Linux iOS开发 开发者
Qt问题(二):无法定位程序输入点于动态链接库
动态链接库(Dynamic Link Library,简称DLL)是一种可执行文件格式,常见于Windows操作系统中,而在Linux和macOS等其他操作系统中,相似的概念通常被称为共享库(Shared Library)。动态链接库允许程序在运行时加载所需的代码和数据,而不是在编译时静态链接到应用程序中。这种方式带来了几个重要的优点:
526 3
|
3月前
|
存储 JSON JavaScript
JavaScript帮我编写快递自动分拣的代码,区分省份市区县城乡镇
JavaScript帮我编写快递自动分拣的代码,区分省份市区县城乡镇在JavaScript中编写一个用于快递自动分拣的代码,区分省份、市区、县、城乡镇,通常意味着你需要一个数据结构来存储这些地理区域的信息,并编写逻辑来根据快递地址中的信息将其分配到正确的分类中。 这里,我将提供一个简化的示例,说明如何使用JavaScript对象和函数来实现这一功能。请注意,这个示例是高度简化的,并且假设你已经有了某种方式(如正则表达式或API调用)来从快递地址中提取省份、市区、县等信息。 ----------------------------------- ©著作权归作者所有:来自51CTO博客作者goS
|
3月前
|
JavaScript 前端开发
js怎么定位不同的页面元素
在JavaScript中,有多种方法定位和选择页面元素。
|
4月前
|
JavaScript 前端开发 定位技术
百度地图JavaScript API v2.0创建地图
百度地图JavaScript API v2.0创建地图
79 0
|
6月前
|
XML 存储 JSON
技术笔记:Qt基础之配置文件(QSettings)
技术笔记:Qt基础之配置文件(QSettings)
444 0
|
6月前
|
调度
技术笔记:QT之深入理解QThread
技术笔记:QT之深入理解QThread
61 0
|
7月前
|
JavaScript 定位技术 API
[JS]百度地图设置城市
[JS]百度地图设置城市
67 1
|
7月前
|
移动开发 定位技术 API
编程笔记 html5&css&js 035 HTML 地理定位
编程笔记 html5&css&js 035 HTML 地理定位