精华内容
下载资源
问答
  • 获取当前地理位置

    千次阅读 2020-06-02 11:06:12
    yarn addweixin-js-sdkAMap import wx from 'weixin-js-sdk' import AMap from 'AMap' ...* @description 获取定位信息 * @author ricky * @param * @return */ const isWechat = navigator.userAgent.toLo...

     

    yarn add weixin-js-sdk AMap

    import wx from 'weixin-js-sdk'

    import AMap from 'AMap'

    /**
     * @description 获取定位信息
     * @author ricky
     * @param
     * @return
     */

    const isWechat = navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1
    export const getPosition = () => {
        return new Promise((resolve, reject) => {
            if (isWechat) {
                wx.getLocation({
                    type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
                    success: function(res) {
                        // 通过jssdk获取经纬度,再使用百度地图websericeApi进行逆地址解析
                        let location = `${res.latitude},${res.longitude}`
                        let url = `http://api.map.baidu.com/reverse_geocoding/v3/?ak=${BMAP_KEY}&output=json&coordtype=wgs84ll&location=${location}`
                        resolve(res)
                        vm.jsonp(url).then((data) => {
                            setPosition(data.result.addressComponent)
                        })
                    },
                    fail: (err) => {
                        console.log(err)
                        reject()
                    }
                })
            } else {
                // 高德地图获取定位
                const map = new AMap.Map('container')
                map.plugin('AMap.Geolocation', function() {
                    var geolocation = new AMap.Geolocation({ timeout: 8000 })
                    geolocation.getCurrentPosition()
                    AMap.event.addListener(
                        geolocation,
                        'complete',
                        (data) => {
                            setPosition(data.addressComponent, data.position.lng, data.position.lat)
                            resolve({
                                latitude: data.position.lat,
                                longitude: data.position.lng
                            })
                        }
                        // setPosition(data.addressComponent, null, null)
                    )
                    AMap.event.addListener(geolocation, 'error', (err) => {
                        console.log(err)
                        reject()
                    })
                })
            }
        })
    }
    /**
     * @description 保存地理位置信息
     * @author ricky
     * @param
     * @return
     */
    const setPosition = (position, longitude, latitude) => {
        store.dispatch('setPosition', {
            longitude: longitude,
            latitude: latitude,
            provinceCode: parseInt(Number(position.adcode) / 100) * 100,
            cityCode: parseInt(Number(position.adcode) / 10000) * 10000,
            areaCode: position.adcode,
            province: position.province,
            city: position.city,
            area: position.district
        })
    }

     

    腾讯地图api

    http://apis.map.qq.com/ws/location/v1/ip?ip=59.58.96.18&key=youkey

     

    3YJBZ-KMCEX-ISX45-ZMY7Z-HQPUO-RTFTJ

    展开全文
  • 主要为大家详细介绍了JS获取当前地理位置的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Android 获取当前地理位置信息

    千次阅读 2019-07-25 17:20:20
    Android 获取当前地理位置信息 在项目当中经常需要获取当前所在的地理位置信息,但只是单个地位,并不需要地图、周边检索、路线等其他额外的功能, 所以我们如果引入第三方sdk就感觉很笨重,并且有些得不尝试。 在...

    Android 获取当前地理位置信息

    在项目当中经常需要获取当前所在的地理位置信息,但只是单个地位,并不需要地图、周边检索、路线等其他额外的功能,
    所以我们如果引入第三方sdk就感觉很笨重,并且有些得不尝试。
               在Android系统中已经为我们提供了简单的获取经纬度的方法,并且也提供了根据经纬度逆地理编码获取当前地理位置信息方法。

    一、 首先获取经纬度

    1、获取LocationManager位置信息管理对象

    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

    2、根据LocationManager获取经纬度提供方式(网络定位、GPS定位) 

    •   Android提供了三种获取经纬度的方式
         a: 通过网络定位,
             获取方式:LocationManager.NETWORK_PROVIDER
             优点:获取精度比较高,
             缺点:仅能在户外使用,获取定位信息速度慢,并且耗电高
    
         b: 通过GPS定位
             获取方式:LocationManager.GPS_PROVIDER
             优点:能在户外户内使用,定位速度快,并且耗电低,
             缺点:精确度不高
        c: 通过passive定位,非初始化获取位置信息,只用于特定的情景下被动接收位置信息变化,一般不用
             获取方式:LocationManager.PASSIVE_PROVIDER 
    
    • 实例代码:
                   /**
                   * 根据LocationManager获取定位信息的提供者
                   * @param locationManager
                   * @return
                   */
                  private static String getProvider(LocationManager locationManager){
      
                      //获取位置信息提供者列表
                      List<String> providerList = locationManager.getProviders(true);
      
                      if (providerList.contains(LocationManager.NETWORK_PROVIDER)){
                          //获取NETWORK定位
                          return LocationManager.NETWORK_PROVIDER;
                      }else if (providerList.contains(LocationManager.GPS_PROVIDER)){
                          //获取GPS定位
                          return LocationManager.GPS_PROVIDER;
                      }
                      return null;
                  }

    3、根据经纬度提供者,获取经纬度

    代码示例:
                public static Location getLocation(Context context) {
    
                    /*获取LocationManager对象*/
                    LocationManager locationManager = (LocationManager)   context.getSystemService(Context.LOCATION_SERVICE);
                    String provider = getProvider(locationManager);
                    if (provider == null) {
                        Toast.makeText(context, "定位失败", Toast.LENGTH_SHORT).show();
                    }
                    //系统权限检查警告,需要做权限判断
                    if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                        // TODO: Consider calling ActivityCompat#requestPermissions
                        return null;
                    }
                    return locationManager.getLastKnownLocation(provider);
                }

     

    二、 根据经纬度通过逆地理编码获取位置信息

    1、在Android SDK中提供了 Geocoder类来进行位置的解析,

        注意:Geocoder在获取位置信息的时候会阻塞主线程,我们在使用的时候,尽量在异步任务中处理位置信息

    Geocoder gc =  new Geocoder(this, Locale.getDefault());

    在Geocoder中提供了三个方法获取List<Address>位置信息,注意我们获取到的是集合对象

                getFromLocation(double latitude, double longitude, int maxResults);
                getFromLocationName(String locationName, int maxResults);
                getFromLocationName(String locationName, int maxResults, double lowerLeftLatitude, double lowerLeftLongitude, double upperRightLatitude, double upperRightLongitude);
    
    根据经纬度获取,我们调用getFromLocation方法,如下
                   Geocoder gc =  new Geocoder(this, Locale.getDefault());
                   List<Address>locationList = null;
                   try {
                       ocationList = gc.getFromLocation(location.getLatitude(),location.getLongitude(),10);
                   } catch (IOException e) {
                       e.printStackTrace();
                   }

    2、在百度获取高德官网注册应用,调用开放接口获取地理位置信息,这里不在描述

    三、对经纬度变化的监听

    • 通过LocationManager设置对位置变化的监听,设置方法如下:
      locationManager.requestLocationUpdates();
      
      监听方法如下:
               LocationListener locationListener = new LocationListener() {
                  //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
                  public void onLocationChanged(Location location) {
                      // log it when the location changes
                      if (location != null) {
             	        	checkDistance(location);
             	        }
                  }
                  // Provider被disable时触发此函数,比如GPS被关闭
                         public void onProviderDisabled(String provider) {
                  }
                   //  Provider被enable时触发此函数,比如GPS被打开
                   public void onProviderEnabled(String provider) {
      
                   }
                   // Provider的在可用、暂时不可用和无服务三个状态直接切换时触发此函数
                         public void onStatusChanged(String provider, int status, Bundle extras) {
                   }
             };
              private void checkDistance(Location location) {
       		    if (location != null) {
       			    float[] distance = new float[1]; //计算距离
                      Location.distanceBetween(location.getLatitude(), location.getLongitude(), store.getLatitude(), store.getLongitude(), distance);
        				float result=(distance[0] / 1000); //km
      
       		}
       	}

      四、权限申请

      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

       

    展开全文
  • 主要介绍了使用JS获取当前地理位置方法汇总,需要的朋友可以参考下
  • 微信小程序之获取当前地理位置及通过地理位置获取经纬度一、准备工作二、获取当前地理位置三、通过地址获取经纬度收工 一、准备工作 1.获取appId和Secret : 开发=&amp;amp;amp;gt;开发设置 2.获取腾讯位置服务...

    微信小程序之获取当前地理位置及通过地理位置获取经纬度

    一、准备工作

    1. 获取腾讯位置服务,按步骤嫩好:申请密钥页面,上面有个控制台,在左边有个key管理,创建密钥即可。
      在这里插入图片描述

    二、获取当前地理位置

    话不多说,直接上代码,操作起来

    1. 在js中导入下好的sdk
    var QQMapWX = require('../../../utils/qqmap-wx-jssdk.js');
    var qqmapsdk;
    
    1. 页面加载时初始化一下
    onLoad: function () {
        qqmapsdk = new QQMapWX({
          key: 'xxx-xxx-xxx-xxx-xxx' //这里自己的secret秘钥进行填充
        });
      },
    
    1. 获取地理位置授权,先不用看下面的代码,我说一下思路。获取地理位置最关键的一步就是调用腾讯sdk接口,这个接口只要有经纬度,就可以获取到地址;而这个地址可以通过wx.getLocation直接得到;然后就是一个简单的逻辑顺序了:获取授权=>点击允许,授权成功的同时调用wx.getLocation方法=>获取到经纬度后传给腾讯sdk接口 OK。
    // 获取当前地理位置
      getLocal: function (latitude, longitude) {
        let that = this;
        qqmapsdk.reverseGeocoder({
          location: {
            latitude: latitude,
            longitude: longitude
          },
          success: function (res) {
            console.log(res);
            let province = res.result.ad_info.province
            let city = res.result.ad_info.city
            let address = res.result.address
            that.setData({
              province: province,
              city: city,
              latitude: latitude,
              longitude: longitude,
              address: address
            })
    
          },
          fail: function (res) {
            console.log(res);
          },
          complete: function (res) {
            // console.log(res);
          }
        });
      },
    
    // 微信获得经纬度
      getLocation: function () {
        let that = this;
        wx.getLocation({
          type: 'wgs84',
          success: function (res) {
            console.log(JSON.stringify(res))
            var latitude = res.latitude
            var longitude = res.longitude
            var speed = res.speed
            var accuracy = res.accuracy;
            that.getLocal(latitude, longitude)
          },
          fail: function (res) {
            console.log('fail' + JSON.stringify(res))
          }
        })
      },
    
    //获取当前位置
      getUserLocation: function() {
        var that = this;
        wx.getSetting({
          success: (res) => {
            console.log(JSON.stringify(res))
            if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
              wx.showModal({
                title: '请求授权当前位置',
                content: '需要获取您的地理位置,请确认授权',
                success: function(res) {
                  if (res.cancel) {
                    wx.showToast({
                      title: '拒绝授权',
                      icon: 'none',
                      duration: 1000
                    })
                  } else if (res.confirm) {
                    wx.openSetting({
                      success: function(dataAu) {
                        if (dataAu.authSetting["scope.userLocation"] == true) {
                          wx.showToast({
                            title: '授权成功',
                            icon: 'success',
                            duration: 1000
                          })
                          //再次授权,调用wx.getLocation的API
                          that.getLocation();
                        } else {
                          wx.showToast({
                            title: '授权失败',
                            icon: 'none',
                            duration: 1000
                          })
                        }
                      }
                    })
                  }
                }
              })
            } else if (res.authSetting['scope.userLocation'] == undefined) {
              //调用wx.getLocation的API
              that.getLocation();
            } else {
              //调用wx.getLocation的API
              that.getLocation();
            }
          }
        })
      },
    

    三、通过地址获取经纬度

    同样要用到key和微信小程序JavaScriptSDK,没有的同学看一下准备工作,
    下面直接操作,上面写过的同学就不用写了

    1. 在js中导入下好的sdk
    var QQMapWX = require('../../../utils/qqmap-wx-jssdk.js');
    var qqmapsdk;
    
    1. 页面加载时初始化一下
    onLoad: function () {
        qqmapsdk = new QQMapWX({
          key: 'xxx-xxx-xxx-xxx-xxx' //这里自己的secret秘钥进行填充
        });
      },
    
    1. 用户输入完地址后直接调用sdk解析坐标
    <input bindblur='autoGetLocation'></input>
    
    //通过地理位置获取经纬度
      autoGetLocation(e) {
        qqmapsdk.geocoder({
          address: e.detail.value,
          success: function(res) {
            
          },
          complete: res => {
            console.log(res.result.location)
          }
        })
      }
    

    四、注意

    之前忘记说了,这边调用wx.getLocation需要用户授权,就要在app.json中配置一下

    "permission": {
        "scope.userLocation": {
          "desc": "你的位置信息将用于小程序位置接口的效果展示"
        }
      },
    

    收工

    展开全文
  • html5获取当前地理位置
  • Android获取当前地理位置经纬度坐标,使用AndroidStudio开发,内有需要使用的Jar包,导入即可使用
  • 主要介绍了微信小程序 获取当前地理位置和经纬度实例代码的相关资料,这里附有实例代码,及实现效果图,需要的朋友可以参考下
  • 本篇文章小编为大家介绍,用Android Location获取当前地理位置的方法。需要的朋友参考下
  • Android高德地图获取当前地理位置(不显示地图只获取当前位置) 一、集成和权限配置 参考:http://blog.csdn.net/weixin_37577039/article/details/79177131 二、 //声明AMapLocationClient类对象 ...

    Android高德地图获取当前地理位置(不显示地图只获取当前位置)


    一、集成和权限配置
    参考:http://blog.csdn.net/weixin_37577039/article/details/79177131

    二、

    //声明AMapLocationClient类对象
        AMapLocationClient mLocationClient = null;
        //声明AMapLocationClientOption对象
        public AMapLocationClientOption mLocationOption = null;

    onCreate()中

    getCurrentLocationLatLng();

    三、初始化定位并设置定位回调监听

    /**
    *  初始化定位并设置定位回调监听
    */
    private void getCurrentLocationLatLng(){
        //初始化定位
        mLocationClient = new AMapLocationClient(getApplicationContext());
       //设置定位回调监听
        mLocationClient.setLocationListener(mLocationListener);
        //初始化AMapLocationClientOption对象
        mLocationOption = new AMapLocationClientOption();
    
     /* //设置定位场景,目前支持三种场景(签到、出行、运动,默认无场景) 设置了场景就不用配置定位模式等
        option.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn);
        if(null != locationClient){
            locationClient.setLocationOption(option);
            //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效
            locationClient.stopLocation();
            locationClient.startLocation();
        }*/
        // 同时使用网络定位和GPS定位,优先返回最高精度的定位结果,以及对应的地址描述信息
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        //只会使用网络定位
       /* mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving);*/
       //只使用GPS进行定位
        /*mLocationOption.setLocationMode(AMapLocationMode.Device_Sensors);*/
        // 设置为单次定位 默认为false
        /*mLocationOption.setOnceLocation(true);*/
        //设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。默认连续定位 切最低时间间隔为1000ms
        mLocationOption.setInterval(3500);
        //设置是否返回地址信息(默认返回地址信息)
        /*mLocationOption.setNeedAddress(true);*/
        //关闭缓存机制 默认开启 ,在高精度模式和低功耗模式下进行的网络定位结果均会生成本地缓存,不区分单次定位还是连续定位。GPS定位结果不会被缓存。
        /*mLocationOption.setLocationCacheEnable(false);*/
        //给定位客户端对象设置定位参数
        mLocationClient.setLocationOption(mLocationOption);
        //启动定位
        mLocationClient.startLocation();
    }
    

    四、定位回调监听器

    /**
     * 定位回调监听器
     */
    public AMapLocationListener mLocationListener = new AMapLocationListener() {
        @Override
        public void onLocationChanged(AMapLocation amapLocation) {
            if (!IsGpsWork.isGpsEnabled(getApplicationContext())) {
                Toast toast = Toast.makeText(getApplicationContext(), getString(R.string.hasNotOpenGps), Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER, 0, 0);
                toast.show();
            } else {
                if (amapLocation != null) {
                    if (amapLocation.getErrorCode() == 0) {
                        //定位成功回调信息,设置相关消息
                        amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
                        double currentLat = amapLocation.getLatitude();//获取纬度
                        double currentLon = amapLocation.getLongitude();//获取经度
                        latLonPoint = new LatLonPoint(currentLat, currentLon);  // latlng形式的
                    /*currentLatLng = new LatLng(currentLat, currentLon);*/   //latlng形式的
                        Log.i("currentLocation", "currentLat : " + currentLat + " currentLon : " + currentLon);
                        amapLocation.getAccuracy();//获取精度信息
                    } else {
                        //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
                        Log.e("AmapError", "location Error, ErrCode:"
                                + amapLocation.getErrorCode() + ", errInfo:"
                                + amapLocation.getErrorInfo());
                    }
                }
            }
        }
    };

     @Override
        protected void onDestroy() {
            super.onDestroy();
            if(mLocationClient!=null) {
                mLocationClient.onDestroy();//销毁定位客户端。
            }
        }
    
        @Override
        protected void onStart() {
            super.onStart();
            if(mLocationClient!=null) {
                mLocationClient.startLocation(); // 启动定位
            }
        }
        @Override
        protected void onPause() {
            super.onPause();
            if(mLocationClient!=null) {
                mLocationClient.stopLocation();//停止定位
            }
        }

    获取当前位置具体描述(逆地址编码),参考:
    http://blog.csdn.net/weixin_37577039/article/details/79177992


    参考:高德地图官方文档:http://developer.amap.com/api/android-location-sdk/guide/android-location/getlocation

    展开全文
  • android使用GPS获取当前地理位置

    热门讨论 2012-11-20 14:35:02
    获取当前地理位置 2.如果当前位置定位不成功,则可以用此方法获取缓存中的上一次打开地图时定位的地理位置)。这样就避免了空指针异常。而且更重要的是GPS定位不是一下子就能定位成功的,在90%以上的情况下,...
  • 1, 获取当前地理位置,首先要拿到用户的授权wx.openSetting; 2,微信的getLocation接口,获取当前用户的地理位置(微信返回的是经纬度,速度等参数); 3,微信没有将经纬度直接转换为地理位置,借用腾讯位置服务...
  • 1.HTML5获取当前地理位置 HTML5 Geolocation API(地理位置应用程序接口)可以获取当前地理位置,手机端使用GPS,电脑则根据网络定位 检查浏览器是否支持HTML5 Geolocation API [removed] if(navigator.geolocation...
  • 我们现在需要做的功能是根据ip地址获取当前地理位置,是Web 服务API,获取后的位置信息一般是城市级别的,不是很精确的那种获取。 (1)开发者需要做的准备工作: 需要登录百度地图的api,点击web 服务API. ...
  • 地理位置的API是通过 navigator.geolocation 对象提供,通过getCurrentPosition方法获取 获取到的地理位置跟 GPS、IP地址、WIFI和蓝牙的MAC地址、GSM/CDMS的ID有关 比如:手机优先使用GPS定位,笔记本等最准确的...
  • 通过IP地址获取当前地理位置(省份)的接口,方便大家可以直接使用结合自己的系统。
  • 主要介绍了Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • ios 实现获取当前地理位置

    千次阅读 2014-12-06 16:59:05
    镔哥主要写几个步骤,希望能帮到大家: ... //实现获取当前地理位置:第一步:  //这两个变量,locationManaager用于获取位置,checkinLocation用于保存获取到的位置信息    NSString * curre
  • 微信JSSDK获取当前地理位置信息

    千次阅读 2016-08-07 10:50:26
    如果获取当前地理位置的信息, 包括经纬度和位置详细信息,并在微信公众号页面中打开当前位置的图 步骤如下: 1. 在页面上放置一个按钮,用来点击触发获取地理位置接口的事件: 获取地理位置接口 ...
  • Android实现注册登录后 点击获取当前地理位置及经纬度坐标,使用AndroidStudio开发,内有服务器完整代码,Android端可与服务器进行通信,完美运行
  • vue移动端进入页面获取当前地理位置实现方法

    万次阅读 多人点赞 2019-02-25 18:20:11
    话不多说,直接写方法步骤,需要的直接拿去放在自己项目中即可使用 ...-- 获取地理位置 --> <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.3&key=d4332e5adb8b...
  • html5——获取当前地理位置

    千次阅读 2014-03-16 18:25:36
    使用方法getCurrentPosition()方法获取当前地理位置信息。 在HTML5网页应用中,提供了一组Geolocation API,用来获取用户的地理位置信息。在移动设备中,如果浏览器支持且设置有定位功能,就可以使用这组API定位...
  • 网页JS获取当前地理位置

    千次阅读 2015-05-15 16:16:29
    网页JS获取当前地理位置(省市区)  眼看2014又要过去了,翻翻今年的文章好像没有写几篇,忙真的或许已经不能成为借口了,在忙时间还是有的,就像海绵里的水挤挤总会有滴。真真的原因是没有学习过什么新的技术,...
  • Vue 获取当前地理位置信息

    千次阅读 2020-05-11 11:35:43
    两个参考: https://blog.csdn.net/YY110621/article/details/87921605 ... ... 也直接放代码,虽然是转载. ...-- 获取地理位置 这个key是申请的 感谢--> <script type="text/javascript" src="https://webapi..
  • 小程序获取当前地理位置

    千次阅读 2018-05-23 17:28:39
    两种方法:一种是腾讯地图获取,另一种是百度地图获取我用的是腾讯地图获取步骤如下 可参考腾讯地图api: http://lbs.qq.com/qqmap_wx_jssdk/index.html1. 申请开发者密钥(key):申请密钥2. 下载微信小程序...
  • 对于企业大多数员工来说,由于其工作位置的固定的,可以有多种方式进行上班打卡签到以保证该员工有按时正常来上班,但是对于经常需要出差,去客户现场的员工来说,就无法保证他们是否有去工作,所以希望能通过手机...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,449
精华内容 17,779
关键字:

获取当前地理位置