HTML页面通过js直接调用百度导航接口的案例方法:
var map = new BMap.Map("allmap"); var point = new BMap.Point(addrX,addrY);//这里的addrX,addrY表示你要去的目的地的经纬度 map.centerAndZoom(point, 16); map.enableScrollWheelZoom(); var myIcon = new BMap.Icon("myicon.png",new BMap.Size(30,30),{ anchor: new BMap.Size(10,10) }); var marker=new BMap.Marker(point,{icon: myIcon}); map.addOverlay(marker); var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ if(this.getStatus() == BMAP_STATUS_SUCCESS){ var mk = new BMap.Marker(r.point); map.addOverlay(mk); //map.panTo(r.point);//地图中心点移到当前位置 var latCurrent = r.point.lat;//获取当前位置纬度 var lngCurrent = r.point.lng;//获取当前位置经度 //alert('我的位置:'+ latCurrent + ',' + lngCurrent); //console.log("http://api.map.baidu.com/direction?origin="+latCurrent+","+lngCurrent+"&destination="+addrY+","+addrX+"&mode=driving®ion="+city+"&output=html&src=webapp.baidu.openAPIdemo"); location.href="http://api.map.baidu.com/direction?origin="+latCurrent+","+lngCurrent+"&destination="+addrY+","+addrX+"&mode=driving®ion=珠海&output=html&src=webapp.baidu.openAPIdemo "; } else { alert('failed'+this.getStatus()); } },{enableHighAccuracy: true})
已知出发地,跟目的地的经纬度计算出俩地的距离:
获取当前位置的经纬度:
var x,y;
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(
function (pos) {
// 赋值xy
x= pos.point.lng;//当前经度
y = pos.point.lat;//当前纬度
})
目的地的经纬度可以通过百度坐标系统通过地名来转换成当前地名的经纬度:
计算俩地的方法:
var lng1 = $("#x").val();//当前经度
var lat1 = $("#y").val();//当前纬度
var lng2 = pd.addrX;//车行经度
var lat2 = pd.addrY;//车行纬度
function rad(d) {
return d * Math.PI / 180;
}
function getDistance(lat1, lng1, lat2, lng2) {
var earth_radius = 6378.137; //单位为公里
var radlat1 = rad(lat1);
var radlng1 = rad(lng1);
var radlat2 = rad(lat2);
var radlng2 = rad(lng2);
var a = radlat1 - radlat2;
var b = (radlng1 - radlng2) * Math.PI / 180.0;
//var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radlat1)*Math.cos(radlat2)*Math.pow(Math.sin(b/2),2)));
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
+ Math.cos(radlat1) * Math.cos(radlat2)
* Math.pow(Math.sin(b / 2), 2)));
s = s * earth_radius;
s = Math.round(s * 10000) / 10000;
s = s.toFixed(1) ;
return s;
}
var juli = getDistance(lat1, lng1, lat2, lng2);
认真努力,脚踏实地,加油!!