[地图Map] 百度地图api 自定义路线的道路匹配问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[地图Map] 百度地图api 自定义路线的道路匹配问题相关的知识,希望对你有一定的参考价值。

问题是这样的.想通过一组geopont在地图上划出路线,并且实现模拟导航功能(轨迹回放.就是小车在路线上跑);大致已经实现了...但是现在有个问题.. 首先划出的路线是根据两个经纬度连直线.这样划出的肯定就没有道路匹配.就会出现横穿马路横穿大厦的问题?,这个有朋友实现过吗请赐教!.

参考技术A 这个如果你用的是googlemap api google 给你提供了解决方案,你可以通过请求google服务器来获取google给你提供的路径规划解决方案,解析服务器返回的数据,形成一个location(经纬度)的list,然后你在地图图层上画出相应的坐标点的连线就行。比如A -B的解析数据是(x1,y1),(x2,y2)(x3,y3),(x4,y4),你画对应的四个点的连线就行了。给你个google地图的连接 https://developers.google.com/maps/documentation/directions/ 查看原帖>>本回答被提问者采纳 参考技术B 导航软件需要查询路线,或者定位是要花费流量的
楼主可以试试腾讯的地图,支持离线下载,节约百分之九十的流量
在界面我→离线下载→输入城市就好了,还可以移动离线地图包的位置,如果手机内有离线资源的话自动搜索离线地图包
地点查询:快速灵活准确的定位,帮助找到所在的位置及目的地;
路线查询:提供打车公交自驾多种路线查询全听着语音开车就行了不用看手机也安全不少 对了用的时候给实时路况开着自动优选最快捷的路线 能省不少时间
希望可以帮到你,祝您出行愉快

百度地图API 自定义坐标点及图片

var map = new BMap.Map("allmap");
var point = new BMap.Point(105.955754,36.525109);
map.centerAndZoom(point,8);
map.enableScrollWheelZoom();


//获得原标示数组
// 定义标示图片
var icon1 = new BMap.Icon("image/标示1.jpg",new BMap.Size(128,128));
var icon2 = new BMap.Icon("image/标示3.jpg",new BMap.Size(128,128));
// 设置标示
var mark1 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:icon1});
var mark2 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:icon1});
var mark3 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:icon1});
var mark4 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:icon2});
var mark5 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:icon2});
var mark6 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:icon2});
var mark7 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:icon2});
var mark8 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:icon2});
var mark9 = new BMap.Marker(new BMap.Point(106.258806,38.289461),{icon:icon2});
var marks = [mark1,mark2,mark3,mark4,mark5,mark6,mark7,mark8,mark9];

//获得点击后的标示数组{
// 定义标示图片
var changeIcon1 = new BMap.Icon("image/标示2.jpg",new BMap.Size(128,128));
var changeIcon2 = new BMap.Icon("image/标示4.jpg",new BMap.Size(128,128));
// 设置标示
var changeMark1 = new BMap.Marker(new BMap.Point(116.41433,39.889031),{icon:changeIcon1});
var changeMark2 = new BMap.Marker(new BMap.Point(116.303371,39.858021),{icon:changeIcon1});
var changeMark3 = new BMap.Marker(new BMap.Point(116.44092,39.899991),{icon:changeIcon1});
var changeMark4 = new BMap.Marker(new BMap.Point(116.409156,39.968263),{icon:changeIcon2});
var changeMark5 = new BMap.Marker(new BMap.Point(116.330967,39.960742),{icon:changeIcon2});
var changeMark6 = new BMap.Marker(new BMap.Point(116.450549,39.927994),{icon:changeIcon2});
var changeMark7 = new BMap.Marker(new BMap.Point(116.422379,39.92224),{icon:changeIcon2});
var changeMark8 = new BMap.Marker(new BMap.Point(116.383859,39.924896),{icon:changeIcon2});
var changeMark9 = new BMap.Marker(new BMap.Point(116.411311,39.942932),{icon:changeIcon2});
var changeMarks = [changeMark1,changeMark2,changeMark3,changeMark4,changeMark5,changeMark6,changeMark7,changeMark8,changeMark9];


//创建Mark标示
for(var i=0;i<marks.length;i++){
    // 将此标示放入地图
    map.addOverlay(marks[i]);
    //var markIndex = marks[i];
    (function(i){
        marks[i].addEventListener("click",function(e){
            for(var j=0;j<marks.length;j++){
                if(j == i){
                    //alert("i = " + i);
                    var n = j+1;
                    doClick(n);
                   // 当鼠标点击这个标示的时候,标示的颜色改
                   map.addOverlay(changeMarks[j]);
                }else{
                    map.removeOverlay(changeMarks[j]);
                }
            }
        });
    })(i);
}

 

摘自:https://bbs.csdn.net/topics/390508734

 



























































以上是关于[地图Map] 百度地图api 自定义路线的道路匹配问题的主要内容,如果未能解决你的问题,请参考以下文章

百度地图怎么设置

百度地图API 自定义标注图标

百度地图API详解之自定义地图类型

在地图API中如何用经纬度来制定路线?

百度地图API 自定义坐标点及图片

开发百度地图,使用百度api时怎么自定义哪气泡