baidumap 百度地图,实现多点之间的带方向路线图。

通过lastVisitAt判断时间先后。

通过三角函数验证角度

再由baidumap 会制线段

绘制三角箭头

比较难看……

测试个人

因为框架引用baidu 有各种问题失败,为最快实现,以此页作一个独立的iframe

通过window.localStorage 实现数据传递。

父页代码

window.localStorage.jsondata=JSON.stringify(json.data);
var iframe=$("#iframebaidumap");
iframe.attr(‘src‘, ‘/baidumap.html‘);
window.localStorage.jsondata数据传递格式如下

"[{"lat":34.514075,"lng":113.439854,"name":"千一网吧","mobileNumber":"15838095119","contactName":"岳老板","phoneNumber":"","lastVisitAt":"2015-04-17T07:14:32.301Z"}]"

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Hello, World</title>
    <style type="text/css">
        /*html{height:100%}*/
        body{
            /*height:100%;*/
            margin:0px;padding:0px;
            height:600px;width:600px;

        }
        #container{height:600px}
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你懂得">
        //v1.5版本的引用方式:src="http://api.map.baidu.com/api?v=1.5&ak=您的密钥"
        //v1.4版本及以前版本的引用方式:src="http://api.map.baidu.com/api?v=1.4&key=您的密钥&callback=initialize"
    </script>
</head>

<body>
<div id="container"></div>
<script type="text/javascript">
// 百度地图API功能
var jsondata=  window.localStorage.jsondata;

if(jsondata){
    var map = new BMap.Map("container");
//                        // 创建地图实例
    jsondata=JSON.parse(jsondata);
    var latcount=0;
    var lngcount=0;
    var points=[];
    jsondata=jsondata.sort(function(x,y){
        x.lastVisitAt> y.lastVisitAt
    });
    var datanew=[];
    for ( var i=0, ien=jsondata.length ; i<ien ; i++ ) {
        if(i>=1){
            if(jsondata[i].lastVisitAt==jsondata[i-1].lastVisitAt){
            }
            else{
                datanew.push(jsondata[i]);
            }
        }else{
            datanew.push(jsondata[i]);
        }

    }
    datanew=datanew.sort(function(x,y){
        x.lastVisitAt> y.lastVisitAt
    });
    for(var i = 0,ien=datanew.length;i<ien;i++){
        latcount+=  datanew[i].lat;
        lngcount+=  datanew[i].lng;
        var point1 =new BMap.Point( datanew[i].lng,datanew[i].lat);
        points.push(point1);
        var marker = new BMap.Marker(point1);
        map.addOverlay(marker);
        var label = new BMap.Label(i,{offset:new BMap.Size(5,-5)});
        marker.setLabel(label);
        if(i>=1){
            var y=datanew[i].lat*1000-datanew[i-1].lat*1000;
            var x=datanew[i].lng*1000-datanew[i-1].lng*1000;
            var jia=0;
            if(x!=0){
                var tanvalue=y/x;
                var jiajiao=Math.atan(tanvalue)*180;
                jia=-(90-jiajiao);
            }
            else{
                if(y<0){
                    jia=180;
                }
            }
            var vectorFCArrow = new BMap.Marker(point1, {
                // 初始化方向向上的闭合箭头
                icon: new BMap.Symbol(BMap_Symbol_SHAPE_FORWARD_CLOSED_ARROW, {
                    scale: 1,
                    strokeWeight: 1,
                    rotation: jia,//顺时针旋转30度
                    fillColor: ‘red‘,
                    fillOpacity: 0.8
                })
            });
            map.addOverlay(vectorFCArrow);
        }
    }
    var polyline = new BMap.Polyline(points, {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5});
    map.addOverlay(polyline);   //增加折线
    var centerpoint = new BMap.Point(lngcount/datanew.length, latcount/datanew.length);
    map.centerAndZoom(centerpoint, 15);
    map.enableScrollWheelZoom(true);
}
    else{
    var map = new BMap.Map("container");
    var point = new BMap.Point(116.417854,39.921988);
    map.centerAndZoom(point, 15);
    var opts = {
        position : point,    // 指定文本标注所在的地理位置
        offset   : new BMap.Size(30, -30)    //设置文本偏移量
    }
    var label = new BMap.Label("欢迎使用小云安全管理系统", opts);  // 创建文本标注对象
    label.setStyle({
        color : "red",
        fontSize : "12px",
        height : "20px",
        lineHeight : "20px",
        fontFamily:"微软雅黑"
    });
    map.addOverlay(label);
    map.enableScrollWheelZoom(true);
}
</script>
</body>
</html>
时间: 2024-08-26 03:37:06

baidumap 百度地图,实现多点之间的带方向路线图。的相关文章

百度地图之多点步行路径连线问题

最近项目需要结合用到百度地图,需求是在地图实现多个点步行连线问题;因为百度有提供两点之间的步行路径图,以及沿线的坐标点信息;初步设想是首先把各个点的步行路径画出来,然后得到这条线路的坐标信息集合,然后通过百度地图的另外一个做直线接口重新把完整线路绘画出来; 如果你对百度地图的API知识不是很了解,可以查看http://developer.51cto.com/art/201110/298662.htm,里面有比较详细的介绍; 百度地图API开发者地址:http://developer.baidu.

Vue2.0与 [百度地图] 结合使用———vue+webpack+axios+百度地图实现组件之间的通信

Vue2.0与 [百度地图] 结合使用: 1.vue init webpack-simple vue-baidu-map 2.下载axios cnpm install axios; 3.在main.js中引入axios,并使用 import axios from 'axios' /* 把axios对象挂到Vue实例上面,其他组件在使用axios的时候直接 this.$http就可以了 */ Vue.prototype.$http = axios; 4.引入百度地图的js秘钥--->最好在inde

Android自定义百度地图缩放图标

自定义实现Android百度地图的缩放图标,需要自定义一个缩放控件,实现效果如下: 这里的缩放效果,实现了点击按钮可以对地图的放大缩小,通过手势放大与缩小也控制缩放图标的可用状态.具体实现如下: 首先是drawable目录下的两个xml配置文件: zoom_selector_in.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schem

Android自己定义百度地图缩放图标

自己定义实现Android百度地图的缩放图标,须要自己定义一个缩放控件,实现效果例如以下: 这里的缩放效果,实现了点击button能够对地图的放大缩小,通过手势放大与缩小也控制缩放图标的可用状态.详细实现例如以下: 首先是drawable文件夹下的两个xml配置文件: zoom_selector_in.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="h

百度地图API制作自定义的放大缩小控件ZoomControlView

接着上一篇:上一篇博客讲的是用百度地图的API制作 Marker 和 自定义的弹出框,这一篇则是讲对于百度地图的放大缩小控制: 老规矩先来张截图: 接下来一大波代码来袭... package com.jsbtclient.cusViews; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapStatus; import com.baidu.mapapi.map.MapStatusUpdateFactory;

ios添加百度地图方法

Hello BaiduMapiOS SDK 引入头文件 引入静态库文件 引入系统framework 引入mapapi.bundle资源文件 初始化BMKMapManager 创建BMKMapView 引入头文件 首先将百度MapAPI提供的头文件和静态库(.a)文件拷贝到您的工程目录下,在Xcode中添加新的文件Group,引入百度MapAPI提供的头文件(请使用Xcode 4.X以上平台). 在您需要使用百度MapAPI的文件中添加以下代码 #import "BMapKit.h" 引

百度地图多点有向连接

百度地图有向链接 为了满足用户从一个点到另一个点有一个明确的指向,并且删除一个点时,跟此相关联的线也相应去掉,具体图如下: 右键删除点相关联的路线,效果如下: 思路 1.初始化地图 2.添加覆盖物 3.地图上添加多个点 4.多个点之间的连线 5.添加方向 6.测试 html页面代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <

百度地图多点路径加载以及调整页面js

1 $(document).ready(function () { 2 /*用正则表达式获取url传递的地址参数,split后获得地址数组*/ 3 bmap = new BMap.Map('mapcontainer'); 4 var point = new BMap.Point(116.404, 39.915);//地图中心点 5 bmap.centerAndZoom(point, 15);//调整缩放以及设立中心点 6 bmap.enableScrollWheelZoom(); 7 var l

百度地图3.1.0(一)Hello BaiduMap

1:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下 如图所示: 2:在AndroidManifest中添加开发密钥.所需权限等信息 1 <application 2 <meta-data 3 android:name="com.baidu.lbsapi.API_KEY" 4 android:value="开发者 key