手机浏览器 JavaScript 调起百度地图导航
发布时间
阅读量:
阅读量
JavaScript代码
/** * 浏览器去导航
* @param target_lng 目标点经度
* @param target_lat 目标点纬度
*/
function H5Navigation(target_lng,target_lat) {
var self=this;
//起点经度
this.start_lng=0;
//起点纬度
this.start_lat=0;
//目标经度
this.target_lng=target_lng;
//目标纬度
this.target_lat=target_lat;
//获取定位
this.getLocation=function(){
var options={
enableHighAccuracy:true,
maximumAge:1000
}
if(navigator.geolocation){
//浏览器支持geolocation
navigator.geolocation.getCurrentPosition(self.onSuccessLocation,self.onErrorLocation,options);
}else{
//浏览器不支持geolocation
alert('您的浏览器不支持地理位置定位');
}
}
//成功时
this.onSuccessLocation=function(position){
//返回用户位置 这里获得的坐标为WGS84坐标
//经度
self.start_lng =position.coords.longitude;
//纬度
self.start_lat = position.coords.latitude;
// alert('经度'+self.start_lng+',纬度'+self.start_lat);
//调用百度地图导航
toBaidu(self.start_lng,self.start_lat,self.target_lng,self.target_lat);
}
//失败时
this.onErrorLocation=function(error){
switch(error.code){
case 1:
alert("位置服务被拒绝");
break;
case 2:
alert("暂时获取不到位置信息");
break;
case 3:
alert("获取信息超时");
break;
case 4:
alert("未知错误");
break;
}
}
}
/** * 去百度地图进行导航
* @param start_lng 起点经度
* @param start_lat 起点纬度
* @param target_lng 目标点经度
* @param target_lng 目标点经度
*/
function toBaidu(start_lng,start_lat,target_lng,target_lat) {
//坐标转换 调用后台API 将WGS84坐标转换为百度的BD09坐标
$.get("/front/map/convertCoords",{"lng":start_lng,"lat":start_lat,"from":"1","to":"5"},function (data) {
var start_bd09_lng=data.result[0].x;
var start_bd09_lat=data.result[0].y;
//调起百度进行导航
location.href="http://api.map.baidu.com/direction?origin=latlng:"+start_bd09_lat+","+start_bd09_lng+"|name:我的位置&destination="+target_lat+","+target_lng+"&mode=driving®ion=中国&output=html&src=webapp.demo.location";
})
}
调用示例
/** * 调用示例
*/
function goNavigation() {
var target_lng="目标点经度 WGS84坐标";
var target_lat="目标点纬度 WGS84坐标";
//浏览器端去导航
new H5Navigation(target_lng,target_lat).getLocation();
}
后台坐标转换接口 Java代码
public class BaiduMapUtil {
//百度地图的AK
private static final String AK="您的AK";
/** * 坐标转换
* @param coords
* @param from
* @param to
* @return
*/
public static Map convert(String coords, String from, String to) {
try {
String url = "http://api.map.baidu.com/geoconv/v1/?coords=" + coords + "&from=" + from + "&to=" + to + "&ak=" + AK;
String res = HttpUtil.get(url);
return JSONUtil.parseObj(res);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args){
convert("117.01997,36.612934","1","5");
}
}
Controller层:
/** * 坐标转换
* @param lng
* @param lat
* @param from
* @param to
* @return
*/
@RequestMapping(value = "/front/map/convertCoords")
@ResponseBody
public Map convertCoords(String lng, String lat, String from, String to){
return BaiduMapUtil.convert(lng+","+lat,from,to);
}
其中参数from为源坐标类型,参数to为要转换为的坐标类型

百度的相关文档
百度地图位置转换API文档
全部评论 (0)
还没有任何评论哟~
