Advertisement

手机浏览器 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&region=中国&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

百度地图位置转换API文档

全部评论 (0)

还没有任何评论哟~