百度地图api,使用QT同时绘制多个标注

myMap.html     文件内容:

<html>
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <style type="text/css">
                body, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";}
                #allmap{height:500px;width:100%;}
                #r-result{width:100%; font-size:14px;}
        </style>
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=用自己的ak"></script>
        <title>城市名定位</title>
</head>
<body>
        <div id="allmap"></div>
        <div id="r-result">
                经度: <input id="longitude" type="text" style="width:100px; margin-right:10px;" />
                纬度: <input id="latitude" type="text" style="width:100px; margin-right:10px;" />
                <input type="button" value="查询" onclick="theLocation()" />
        </div>
</body>
</html>
<script type="text/javascript">
        // 百度地图API功能
        var map = new BMap.Map("allmap",{
        minZoom : 1,
        maxZoom : 20
        });
        //初始化地图,设置坐标点在哪
        map.centerAndZoom(new BMap.Point(117,31),20);
        map.enableScrollWheelZoom(true);

        //设置标注图片
        var icon = new BMap.Icon("car_4.png",new BMap.Size(35,30),{
                        anchor:new BMap.Size(35,0)
         });

        // 用经纬度设置地图中心点
        function theLocation(){
               if(document.getElementById("longitude").value != "" && document.getElementById("latitude").value != ""){
                        map.clearOverlays();
                        var new_point = new BMap.Point(document.getElementById("longitude").value,document.getElementById("latitude").value);
                        var marker = new BMap.Marker((new_point),{
            icon:icon
    });
                        map.addOverlay(marker);              // 将标注添加到地图中
                        map.panTo(new_point);
                }
       }

       translateCallback = function addpoint1(data){
        if(data.status === 0) {
        var marker1 = new BMap.Marker(data.points[0]);
        map.addOverlay(marker1);
        }
    }

        function send(){
            map.clearOverlays();
            }

        function addpoint (x,y){

                //map.clearOverlays(); //更新前先清除之前的标注

                var convertor = new BMap.Convertor();
                var pointArr = [];
                var ggPoint = new BMap.Point(x,y);
                pointArr.push(ggPoint);
                //map.clearOverlays();
                //var ggPoint = new BMap.Point(x,y);
                var marker = new BMap.Marker((ggPoint),{
            icon:icon
    });
                map.addOverlay(marker);
                convertor.translate(pointArr,1,5,translateCallback)
    }
</script>

qt构造函数内代码:

qApp->setApplicationName("padcollectionclient");

    QString sFilePath = QCoreApplication::applicationDirPath();
    sFilePath += "/my.html";

    ui->lineEdit->setText(sFilePath);
    //connect(ui->lineEdit,SIGNAL(returnPressed()),this,SLOT(loadNavigate()));

    //设置ActiveX控件为IEMicrosoft Web Browser
    //设置ActiveX控件的id,最有效的方式就是使用UUID
    //此处的{8856F961-340A-11D0-A96B-00C04FD705A2}就是Microsoft Web Browser控件的UUID
    ui->axWidget->setControl(QString::fromUtf8("{8856F961-340A-11D0-A96B-00C04FD705A2}"));
    //ui->axWidget->setObjectName(QString::fromUtf8("webWidget"));//设置控件的名称
    //ui->axWidget->setFocusPolicy(Qt::StrongFocus);//设置控件接收键盘焦点的方式:鼠标单击、Tab键
    //ui->axWidget->setProperty("DisplayAlerts",false); //不显示任何警告信息。
    //ui->axWidget->setProperty("DisplayScrollBars",true); // 显示滚动条

    loadNavigate();

loadNavigate() :

QString Utr = ui->lineEdit->text().trimmed();
ui->axWidget->dynamicCall("Navigate(const QString&)",Utr);

on_pushButton_clicked()  :

QString str = "send()";
QAxObject *document = ui->axWidget->querySubObject("Document");
QAxObject *parentWindow = document->querySubObject("parentWindow");
parentWindow->dynamicCall("execScript(QString,QString)",str,"JavaScript");

// 1
QString x = ui->lineEdit_2->text();
double xx = x.toDouble();
QString y = ui->lineEdit_3->text();
double yy = y.toDouble();

// 2
QString x_2 = ui->lineEdit_4->text();
double xx_2 = x_2.toDouble();
QString y_2 = ui->lineEdit_5->text();
double yy_2 = y_2.toDouble();

// 3
QString x_3 = ui->lineEdit_6->text();
double xx_3 = x_3.toDouble();
QString y_3 = ui->lineEdit_7->text();
double yy_3 = y_3.toDouble();

// 3
QString x_4 = ui->lineEdit_8->text();double xx_4 = x_4.toDouble();
QString y_4 = ui->lineEdit_9->text();
double yy_4 = y_4.toDouble();

double lon[4], lat[4];
lon[0] = xx; lon[1] = xx_2; lon[2] = xx_3; lon[3] = xx_4;
lat[0] = yy; lat[1] = yy_2; lat[2] = yy_3; lat[3] = yy_4;

qDebug() << "x  :" << xx << "     " << "y  :" << yy << endl
         << "x  :" << xx_2 << "     " << "y  :" << yy_2 << endl
         << "x  :" << xx_3 << "     " << "y  :" << yy_3 << endl
         << "x  :" << xx_4 << "     " << "y  :" << yy_4 << endl;

for (int i = 0; i < 4; i++)
    {
        QString command = QString("addpoint(%1,%2)").arg(QString::number(lon[i], ‘f‘, 6)).arg(QString::number(lat[i], ‘f‘, 6));
        QAxObject *document = ui->axWidget->querySubObject("Document");
        QAxObject *parentWindow = document->querySubObject("parentWindow");
        parentWindow->dynamicCall("execScript(QString,QString)",command,"JavaScript");
    }

运行后:

原文地址:https://www.cnblogs.com/ruandahua/p/11388163.html

时间: 2024-08-10 19:15:53

百度地图api,使用QT同时绘制多个标注的相关文章

百度地图API多个点聚合时,标注添加的标签label地图刷新就丢失的问题解决

当将自定义的Marker(含有Label)通过MarkerClusterer 管理的时候,当地图发生任何移动.缩放 的时候,Marker 的Label 就会自动消失. 这个问题主要是由于百度的点聚合API<script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></scrip

【百度地图API】情人节求爱大作战——添加标注功能

原文:[百度地图API]情人节求爱大作战--添加标注功能 任务描述: 2月2日是除夕,2月14立马来!即将到来的情人节,你想送TA一份什么礼物呢? 不如,在你们居住的地方,画个大大的桃心,表达你对TA的爱意吧! 如何实现: 给地图增加一个事件监听,addEventListener: 当鼠标点击地图时,首先获取改点坐标,其次在改点坐标处增加一个红色标注. 图示: 运行代码,请点击这里. 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr

调用百度地图API添加点聚合时,marker标注的label标签刷新丢失问题

最近在使用百度地图API的点聚合时遇到一个问题 当将自定义的Marker(含有Label)通过MarkerClusterer 管理的时候,当地图发生任何移动.缩放 的时候,Marker 的Label 就会自动消失. 这个问题主要是由于百度的点聚合API<script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_mi

百度地图API,根据经纬度实现车辆移动轨迹绘制

百度地图,实现车辆轨迹绘制 实现思路: 1.根据经纬度实现车辆轨迹绘制 2.使用百度地图API的两个覆盖物实现,Polyline(折线)绘制轨迹,Marker(图标)绘制小车图标 3.将每两个坐标间连线起来,形成连贯的轨迹线路 4.生成下一个图标后删除上一个绘制的图标,形成小车移动动画感 5.本例使用的是临近的随机坐标点 6.初学者,欢迎大家交流学习 7.查看实例 代码: [html] view plain copy <!DOCTYPE html> <html> <head&

百度地图API 绘制轨迹历史

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 6 &l

Android应用中使用百度地图API定位自己的位置(二)

官方文档:http://developer.baidu.com/map/sdkandev-6.htm#.E7.AE.80.E4.BB.8B3 百度地图SDK为开发者们提供了如下类型的地图覆盖物: 我的位置图层(MyLocationOverlay):用于显示用户当前位置的图层(支持自定义位置图标): Poi搜索结果图层(PoiOverlay):用于显示兴趣点搜索结果的图层: 路线图层(RouteOverlay):公交.步行和驾车线路图层,将公交.步行和驾车出行方案的路线及关键点显示在地图上(起.终

百度地图API

本文我将从如何使用地图API(本文以百度为例,谷歌类似)开始,往后的扩展行的内容详见后续文章.1.打开链接http://developer.baidu.com/map/jshome.htm  这里有很多DEMO,或者你直接百度搜索“百度地图API”,第一个就是.进入后有很多方向供你选择,由于现在开源的地图API都是JS脚本写的,所以我上面的链接就只针对JAVASCRIPT进行介绍.  即使是编程菜鸟(像我这种),也知道当你在任何一个开发环境下写代码时,都需要加入头文件,例如,你要在C++里使用c

使用百度地图API制作线路轨迹播放

1.使用百度地图API制作轨迹播放: 可应用于车辆跟踪.行驶线路回放.跑步行程的记录等地图应用场景, 1.1绘制静态轨迹图 获取多个轨迹点point(必须包含经度.纬度) 使用polyline对象依次连接相邻的2个点(注意polyline的个数比point的少1) 1.2绘制动态轨迹图(固定间隔时间) 每隔500毫秒读取一个轨迹点,实现a,b两个功能 a增加一条polyline b将marker从先前的point移到当前点 主方法使用setTimeout方法迭代来实现动态循环 Polyline在

从百度地图API接口批量获取地点的经纬度

今天我同事要做一个规划,需要获取Excel中的2000多个地址的经纬度.问我有没有办法,正好我这段时间学习 Python,想了一下,觉得可以.于是就写了一个以下的代码.刚开始觉得差不多两个小时可以搞定,结果花费了半天多,汗...主要是在卡从百度地图 API获取的是坐标总是不对.后来网上查资料才明白,原来从百度API获取的是墨卡托坐标,而实际使用的是WGS84坐标. 1 #!/usr/bin/python 2 #coding:utf-8 3 4 import xlrd 5 import xlwt