使用html5 地理位置技术 和 百度地图api查询当前位置

使用了  zepto  和 requirejs

 

复制代码
define(['zepto'],function($){
 var geolocation = {
        init:function(config,onSuccess,onError){
            if(typeof(config)=='function'){
                onError = onSuccess;
                onSuccess = config;
                config = undefined;
            }
            
            if(Object(config)===config){
                for(var k in this.option){
                    this.option[k] = config[k];
                }
            }
            
            if(typeof(onSuccess)=='function'){
                this.onSuccess = onSuccess;
            }
            
            if(typeof(onError)=='function'){
                this.onError = onError;
            }
            
            return this;
        },
        
          getPosition:function(returnType){//returnType==cityName,返回城市名称
                  var host = this;
                 navigator.geolocation.getCurrentPosition(function ( position){
                         console.log('getCurrentPosition success ',position);
                        if(!returnType){
                              host.onSuccess.call(null,position);
                          }else{
                              var lat = position.coords.latitude;
                            var lng = position.coords.longitude;
                        
                            var urls="http://api.map.baidu.com/geocoder/v2/?ak=0QoBGmQ4i5N0FycRCQMukgqd&callback=renderReverse&location="+lat+","+lng+"8&output=json&pois=0";
                        
                            $.ajax({
                                type: "POST",
                                url: urls,
                                dataType : "jsonp",
                                success: function(data){
                                    //alert(JSON.stringify(data));
                                    //alert(host.onSuccess)
                                    console.log('get city name>>>',data);
                                    host.onSuccess.call(null,data);
                                },
                                error:function(error){
                                    host.onError.call(null,error);
                                }
                          
                             }); 
                          }
                        
                    }, function(error){
                        
                        host.onError.call(null,error);
                    }, this.option);
                 
                 return this;
          },
          option:{
                enableHighAccuracy: true,
                maximumAge: 30000,
                timeout: 20000
          },
          onSuccess: function(data){
              console.log('geolocation.getCurrentPosition success:',data);
          },
          onError:function(error){
              console.log('geolocation.getCurrentPosition error:',error);
          }

 };

return geolocation;

    
});
复制代码

 

posted @   ecalf  阅读(552)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示