精华内容
下载资源
问答
  • vue定位 获取用户位置信息

    万次阅读 2019-07-04 10:17:43
    关于定位功能尝试了很多种方法,h5定位,百度地图定位,高德地图定位,因为ip定位只能定位到城市,所以我选用的是浏览器定位。...百度定位定位位置与实际位置偏差太大,我从郑州的一个小县城定位到了...

    关于定位功能尝试了很多种方法,h5定位,百度地图定位,高德地图定位,因为ip定位只能定位到城市,所以我选用的是浏览器定位。总结如下:
    H5定位:定位相对较准,但是部分浏览器不兼容,我主要是在手机上测试的,UC和百度浏览器还有ios的微信浏览器是兼容的,其他的浏览器如华为浏览器、搜狗浏览器、QQ浏览器、安卓的微信浏览器全都不兼容,后来发现原来是我的网站是http协议的,升级到https协议就好了,但是坐标系不转换误差会比较大。
    百度定位:定位的位置与实际位置偏差太大,我从郑州的一个小县城定位到了郑州火车站,偏差18公里,百度官方的示例也是如此。浏览器的兼容性倒是可以,但是偏差太大,因为我要做的是给用户推荐路线,所以这个对我来说已经失去了意义。
    高德定位:定位位置最准确,但是不太稳定,有时候能定位成功,有时候定位不成功,官方示例也是这样的,不知道是不是我这边信号的原因,因为稳定性的原因没有测试它的在各个浏览器的运行情况。
    定位的能否成功的因素很多:
    1.浏览器不支持原生定位接口,如IE较低版本的浏览器等;
    2.用户禁用了定位权限,需要用户开启设备和浏览器的定位权限,并在浏览器弹窗中点击“允许使用定位”选项。
    3.览器禁止了非安全域的定位请求,比如Chrome、IOS10已陆续禁止,这时候需要升级站点到HTTPS。注意Chrome不会禁止localhost等域名HTTP协议下的定位;
    4.浏览器定位超时,包括原生的超时,可以适当增加超时属性的设定值以减少这一现象,另外还有个别浏览器(如google Chrome浏览器等)本身的定位接口是黑洞,通过其请求定位完全没有回应,也会超时返回失败。
    5.定位失败,Chrome、火狐以及部分套壳浏览器接入的定位服务在国外,有较大限制,失败率高。
    影响定位精度的因素:
    1.手机是否打开了GPS。
    2.天气、建筑物等的影响。
    3.坐标系统不同,没有进行换算。
    最后,附上我的代码,因为前期做坐标点标注的时候是用的百度地图,所以尽管定位的时候没有用到百度地图,还是把它引入了。我是优先选用H5定位,定位失败的话改用高德地图定位。最后换算成百度坐标实现推荐乘车路线的功能,代码如下:
    main.js:

    import AMap from "vue-amap";//高德地图
    Vue.use(AMap);
    AMap.initAMapApiLoader({
      key: "你的高德key",
      plugin: ["AMap.Scale", "AMap.OverView", "AMap.ToolBar", "AMap.MapType","AMap.Geolocation"],
      v: "1.4.4"
    });
    

    页面内容:

    <template>
      <div class="welcomeNav" v-wechat-title="$route.meta.title">
        <div class="back">
          [外链图片转存失败(img-p7JCjXvd-1562206482460)(https://mp.csdn.net/assets/img/back.jpg)]
        </div>
        <div id="container"></div><!-- 高德地图容器 -->
        <div class="content">
          <div class="map-area" :id="mapId"></div><!-- 百度地图容器 -->
        </div>
        <bottom></bottom>
      </div>
    </template>
    
    <script>
    import { Toast } from "mint-ui";
    import { Indicator } from "mint-ui";
    import loadBMap from "../assets/js/map.js";
    import bottom from "../components/bottom";
    import { setTimeout } from "timers";
    import { lazyAMapApiLoaderInstance } from "vue-amap";
    export default {
      name: "welcomeNav",
      components: {
        bottom
      },
      data() {
        return {
          mapId: "BMap-" + parseInt(Date.now() + Math.random()),
          myMap: null,
          keyword: "",
          lng: 0,
          lat: 0,
          success: false,
          center: [121.59996, 31],
          ak: "你的百度key",
          geolocation: {},
          type3: [550, 30]
        };
      },
      methods: {
        initMap() {
          loadBMap(this.ak)
            .then(() => {
              // 百度地图API功能
              var self = this;
              this.myMap = new BMap.Map(this.mapId); // 创建Map实例
              this.geolocation = new BMap.Geolocation();
              self.myMap.centerAndZoom(new BMap.Point(113.7235, 34.711), 16);
              //添加地图类型控件
              this.myMap.addControl(
                new BMap.MapTypeControl({
                  mapTypes: [BMAP_NORMAL_MAP, BMAP_HYBRID_MAP]
                })
              );
              this.myMap.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
              self.ajax("post", this.host + "/Navigation/selectAll", {}, function(
                //获取标注点
                res
              ) {
                for (var i in res.data) {
                  var point = new BMap.Point(
                    res.data[i].longitude,
                    res.data[i].dimensionality
                  );
                  var marker = new BMap.Marker(point); // 创建标注
                  self.myMap.addOverlay(marker); // 将标注添加到地图中
                  var label = new BMap.Label(res.data[i].label, {
                    offset: new BMap.Size(20, -10)
                  });
                  marker.setLabel(label);
                }
                if (res.data.length > 0) {
                  if (navigator.geolocation.getCurrentPosition) {
                    //h5定位
                    Indicator.open("定位中...");
                    navigator.geolocation.getCurrentPosition(
                      function(position) {
                        var p1 = new BMap.Point(
                          position.coords.longitude,
                          position.coords.latitude
                        );
                        setTimeout(function() {
                          var convertor = new BMap.Convertor();
                          var pointArr = [];
                          pointArr.push(p1);
                          convertor.translate(
                            pointArr,
                            self.getTransType(position.coords.accuracy), //获取需转换的类型
                            5,
                            function(data) {
                              if (data.status === 0) {
                                p1 = data.points[0];
                              }
                              var mk = new BMap.Marker(p1);
                              self.myMap.addOverlay(mk); //标出所在地
                              var p2 = new BMap.Point(
                                res.data[0].longitude,
                                res.data[0].dimensionality
                              );
                              var transit = new BMap.TransitRoute(self.myMap, {
                                renderOptions: { map: self.myMap }
                              });
                              transit.search(p1, p2);
                              Indicator.close();
                            }
                          );
                        }, 1000);
                      },
                      function(error) {
                        //H5定位失败之后调用高德地图
                        lazyAMapApiLoaderInstance.load().then(() => {
                          var map = new AMap.Map("container", {
                            resizeEnable: true
                          });
                          AMap.plugin("AMap.Geolocation", function() {
                            var geolocation = new AMap.Geolocation({
                              enableHighAccuracy: true, //是否使用高精度定位,默认:true
                              timeout: 10000, //超过10秒后停止定位,默认:5s
                              buttonPosition: "RB", //定位按钮的停靠位置
                              buttonOffset: new AMap.Pixel(10, 20), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
                              zoomToAccuracy: true //定位成功后是否自动调整地图视野到定位点
                            });
                            map.addControl(geolocation);
                            geolocation.getCurrentPosition(function(
                              status,
                              result
                            ) {
                              if (status == "complete") {
                                self.lat = result.position.lat;
                                self.lng = result.position.lng;
                                var position = new BMap.Point(self.lng, self.lat);
                                setTimeout(function() {
                                  var convertor = new BMap.Convertor();
                                  var pointArr = [];
                                  pointArr.push(position);
                                  convertor.translate(pointArr, 1, 5, function(
                                    data
                                  ) {
                                    if (data.status === 0) {
                                      var p1 = data.points[0];
                                      var p2 = new BMap.Point(
                                        res.data[0].longitude,
                                        res.data[0].dimensionality
                                      );
                                      var transit = new BMap.TransitRoute(
                                        self.myMap,
                                        {
                                          renderOptions: { map: self.myMap }
                                        }
                                      );
                                      Indicator.close();
                                      transit.search(p1, p2);
                                    }
                                  });
                                }, 1000);
                              }else{
                                Indicator.close();
                                Toast('无法获取您的位置信息');
                              }
                            },function(){
                              Indicator.close();
                              Toast('无法获取您的位置信息');
                            });
                          });
                        });
                      },
                      { enableHighAccuracy: true, timeout: 5000, maximumAge: 0 }
                    );
                  } else {
                    Toast("您的浏览器不支持获取位置信息!");
                  }
                }
              });
            })
            .catch(err => {
              Toast("您的浏览器不支持地图的调用!");
            });
        },
        getTransType(accuracy) {
          if (window.localStorage) {
            var transType = localStorage.getItem("xdlcfwapp_transType");
            if (transType != null && transType != "") {
              return transType;
            }
          }
    
          for (var i = 0; i < this.type3.length; i++) {
            if (this.type3[i] == accuracy) {
              localStorage.setItem("xdlcfwapp_transType", 3);
              return 3;
            }
          }
          localStorage.setItem("xdlcfwapp_transType", 1);
          return 1;
        },
        search() {}
      },
      created() {
        var self = this;
        self.initMap();
      }
    };
    </script>
    <style scoped>
    .welcomeNav {
      padding-top: 44px;
      padding-bottom: 50px;
      background-color: #f9f9f9;
    }
    .content {
      padding: 8px 0 8px;
      text-align: center;
    }
    .bm-view {
      width: 100%;
      height: 600px;
    }
    .search-input {
      text-indent: 3em;
      border-radius: 3px;
      width: 95%;
      height: 35px;
      margin: 5px auto 10px;
    }
    .search {
      width: 18px;
      position: absolute;
      left: 6%;
      top: 12px;
    }
    .map-area {
      width: 100%;
      height: 500px;
    }
    </style>
    
    

    不足之处还望前辈们不吝赐教!谢谢!

    展开全文
  • 手机端定位获取用户位置信息

    万次阅读 2017-05-26 10:31:09
    很多时候,我们需要获取手机端用户的位置信息,当然这需要用户的同意授权才能进行获取,下面介绍下我在项目中使用的定位 由于本项目web端使用的是高德地图,因此手机端定位也使用高德的定位接口 浏览器...

    很多时候,我们需要获取手机端用户的位置信息,当然这需要用户的同意授权才能进行获取,下面介绍下我在项目中使用的定位

    由于本项目web端使用的是高德地图,因此手机端定位也使用高德的定位接口


    <html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
        <title>浏览器定位</title>
    	<link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119.css"/>
        <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=你的key"></script>
    	<script type="text/javascript" src="http://cache.amap.com/lbs/static/addToolbar.js"></script>
    <body>
    <div id='container'></div>
    <div id="tip"></div>
    <script type="text/javascript">
        var map, geolocation;
        //加载地图,调用浏览器定位服务
        map = new AMap.Map('container', {
            resizeEnable: true
        });
        map.plugin('AMap.Geolocation', function() {
            geolocation = new AMap.Geolocation({
                enableHighAccuracy: true,//是否使用高精度定位,默认:true
                timeout: 10000,          //超过10秒后停止定位,默认:无穷大
                buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
                zoomToAccuracy: true,      //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
                buttonPosition:'RB'
            });
            map.addControl(geolocation);
            geolocation.getCurrentPosition();
            AMap.event.addListener(geolocation, 'complete', onComplete);//返回定位信息
            AMap.event.addListener(geolocation, 'error', onError);      //返回定位出错信息
        });
        //解析定位结果
        function onComplete(data) {
            var str=['定位成功'];
            str.push('经度:' + data.position.getLng());
            str.push('纬度:' + data.position.getLat());
            if(data.accuracy){
                 str.push('精度:' + data.accuracy + ' 米');
            }//如为IP精确定位结果则没有精度信息
            str.push('是否经过偏移:' + (data.isConverted ? '是' : '否'));
            
    		var point = data.position.getLng()+","+data.position.getLat();
    		poiToaddress(point);
    
    		document.getElementById('tip').innerHTML = str.join('<br>');
        }
        //解析定位错误信息
        function onError(data) {
            document.getElementById('tip').innerHTML = '定位失败';
        }
    	
    //坐标点转地址
    function poiToaddress(poi) {
    	AMap.plugin(["AMap.Geocoder"], function () {
    		var geocoder = new AMap.Geocoder({
    			city: "0315", //城市,默认:“全国”
    			radius: 500 //范围,默认:500,以已知坐标为中心点,radius为半径,返回范围内兴趣点和道路信息 
    		});
    		geocoder.getAddress(poi, function (status, result) {
    			if (status === 'complete' && result.info === 'OK') {
    				var address = result.regeocode.formattedAddress; //返回地址描述
    				address2point(address); 
    				console.log("地址::"+address);
    			}
    		});
    	})
    }
    
    //地址转坐标
    function address2point(address) {
    	AMap.plugin(["AMap.Geocoder"], function () {
    		var geocoder = new AMap.Geocoder({
    			city: "0315", //城市,默认:“全国”
    			radius: 500 //范围,默认:500,以已知坐标为中心点,radius为半径,返回范围内兴趣点和道路信息 
    		});
    		geocoder.getLocation(address, function (status, result) {
    			if (status === 'complete' && result.info === 'OK') {
    				var geocode = result.geocodes[0];
    				var resultStr = geocode.location.lng + "," + geocode.location.lat;
    				console.log(“坐标::”+resultStr);
    			}
    		});
    	})
    }
    </script>
    </body>
    </html>

    让我们一起遨游在代码的海洋里!


    展开全文
  • 用户可以打开软件接上吐GNSS信息的串口即能显示实时位置,也可以对GNSS信息进行设置
  • Android 百度定位sdkv61.3获取位置信息

    万次阅读 2015-11-19 10:36:27
    最近在弄混合定位,使用Android自带的network定位经常会定位不到,也就是location经常为空,而gps只能在室外定位,室内收不到星。使用很不方便。那就用了一下百度定位sdk,感觉很不错。 百度定位分为三种定位模式: ...

    最近在弄混合定位,使用Android自带的network定位经常会定位不到,也就是location经常为空,而gps只能在室外定位,室内收不到星。使用很不方便。那就用了一下百度定位sdk,感觉很不错。

    百度定位分为三种定位模式

    高精度定位模式  LocationMode.Hight_Accuracy:这种定位模式下,会同时使用网络定位和GPS定位,优先返回最高精度的定位结果;

    低功耗定位模式 LocationMode.Battery_Saving:这种定位模式下,不会使用GPS,只会使用网络定位(Wi-Fi和基站定位);

    仅用设备定位模式 LocationMode.Device_Sensors:这种定位模式下,不需要连接网络,只使用GPS进行定位,这种模式下不支持室内环境的定位。

    一、申请key

    使用百度定位、导航、地图等sdk需要申请key才可以使用。申请地址http://lbsyun.baidu.com/apiconsole/key申请key首先需要有一个百度账号。

    详细过程 http://write.blog.csdn.net/postedit/49925805

    二、导入jar包和so文件

    在相关下载 点击全部下载,选择需要的定位功能,如果需要实现其他功能也可以一块下载其他的开发包。

    将下载的locsdkDevelop6.1.3解压得到两个压缩文件liblocSDK6a.rar和locSDK_6.13.jar,将locSDK_6.13.jar文件导入到Eclipse开发的工程libs目录下。将liblocSDK6a.rar文件解压得到的arm64-v8a,armeabi等文件夹复制到libs目录下。

    点击 工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定locSDK_6.13,确定后返回。

    三、工程代码

    布局文件location.cml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        <Button
            android:id="@+id/bt_location"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:text="@string/start_location"/>
        <TextView
            android:id="@+id/loc_info"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="18sp" />
    </LinearLayout>
    配置清单文件AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="cn.vn.lbs"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="19" />
    	<!-- 这个权限用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <!-- 这个权限用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <!-- 用于读取手机当前的状态-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <!-- 访问网络,网络定位需要上网-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- SD卡读取权限,用户写入离线定位数据-->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <meta-data
                android:name="com.baidu.lbsapi.API_KEY"
                android:value="  " />  //这里填写自己申请的key
            <service android:name="com.baidu.location.f" 
                android:enabled="true" 
                android:process=":remote">
    	</service>	
            <activity
                android:name="cn.vn.lbs.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    </manifest>
    工程代码:

    package cn.vn.lbs;
    import com.baidu.location.BDLocation;
    import com.baidu.location.BDLocationListener;
    import com.baidu.location.LocationClient;
    import com.baidu.location.LocationClientOption;
    import com.baidu.location.Poi;
    import com.baidu.location.LocationClientOption.LocationMode;
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    	public LocationClient mLocationClient = null;
    	private Button bt_location;
    	private TextView loc_info;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.location);
    		bt_location=(Button) findViewById(R.id.bt_location);
    		loc_info=(TextView) findViewById(R.id.loc_info);
    		bt_location.setOnClickListener(new OnClickListener(){
    			@Override
    			public void onClick(View arg0) {
    				if (bt_location.getText().toString().equals(getString(R.string.start_location))) {
    					mLocationClient.start();// 定位SDK
    								// start之后会默认发起一次定位请求,开发者无须判断isstart并主动调用request
    					bt_location.setText(getString(R.string.stop_location));
    				} else {
    					mLocationClient.stop();
    					bt_location.setText(getString(R.string.start_location));
    				}
    			}
    			
    		});
    	}
    	@Override
    	protected void onDestroy() {
    		super.onDestroy();
    		mLocationClient.unRegisterLocationListener(MyLocationListener);
    	}
    	@Override
    	protected void onStart() {
    		super.onStart();
    		mLocationClient = new LocationClient(getApplicationContext());     //声明LocationClient类
    	    mLocationClient.registerLocationListener(MyLocationListener);    //注册监听函数
    	    initLocation();
    	}
    	@Override
    	protected void onStop() {
    		super.onStop();
    	}
    	private void initLocation(){
            LocationClientOption option = new LocationClientOption();
            option.setLocationMode(LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
            option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系
            int span=1000;
            option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
            option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
            option.setOpenGps(true);//可选,默认false,设置是否使用gps
            option.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
            option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
            option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
            option.setIgnoreKillProcess(false);//可选,默认false,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认杀死
            option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
            option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要
            mLocationClient.setLocOption(option);
        }
    	public BDLocationListener MyLocationListener = new BDLocationListener() {
    		@Override
    		public void onReceiveLocation(BDLocation location) {
    			if (null != location && location.getLocType() != BDLocation.TypeServerError) {
    				StringBuffer sb = new StringBuffer(256);
    				sb.append("time : ");
    				/**
    				 * 时间也可以使用systemClock.elapsedRealtime()方法 获取的是自从开机以来,每次回调的时间;
    				 * location.getTime() 是指服务端出本次结果的时间,如果位置不发生变化,则时间不变
    				 */
    				sb.append(location.getTime());
    				sb.append("\nerror code : ");
    				sb.append(location.getLocType());
    				sb.append("\nlatitude : ");
    				sb.append(location.getLatitude());
    				sb.append("\nlontitude : ");
    				sb.append(location.getLongitude());
    				sb.append("\nradius : ");
    				sb.append(location.getRadius());
    				sb.append("\nCountryCode : ");
    				sb.append(location.getCountryCode());
    				sb.append("\nCountry : ");
    				sb.append(location.getCountry());
    				sb.append("\ncitycode : ");
    				sb.append(location.getCityCode());
    				sb.append("\ncity : ");
    				sb.append(location.getCity());
    				sb.append("\nDistrict : ");
    				sb.append(location.getDistrict());
    				sb.append("\nStreet : ");
    				sb.append(location.getStreet());
    				sb.append("\naddr : ");
    				sb.append(location.getAddrStr());
    				sb.append("\nDescribe: ");
    				sb.append(location.getLocationDescribe());
    				sb.append("\nDirection(not all devices have value): ");
    				sb.append(location.getDirection());
    				sb.append("\nPoi: ");
    				if (location.getPoiList() != null && !location.getPoiList().isEmpty()) {
    					for (int i = 0; i < location.getPoiList().size(); i++) {
    						Poi poi = (Poi) location.getPoiList().get(i);
    						sb.append(poi.getName() + ";");
    					}
    				}
    				if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位结果
    					sb.append("\nspeed : ");
    					sb.append(location.getSpeed());// 单位:km/h
    					sb.append("\nsatellite : ");
    					sb.append(location.getSatelliteNumber());
    					sb.append("\nheight : ");
    					sb.append(location.getAltitude());// 单位:米
    					sb.append("\ndescribe : ");
    					sb.append("gps定位成功");
    				} else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果
    					// 运营商信息
    					sb.append("\noperationers : ");
    					sb.append(location.getOperators());
    					sb.append("\ndescribe : ");
    					sb.append("网络定位成功");
    				} else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果
    					sb.append("\ndescribe : ");
    					sb.append("离线定位成功,离线定位结果也是有效的");
    				} else if (location.getLocType() == BDLocation.TypeServerError) {
    					sb.append("\ndescribe : ");
    					sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因");
    				} else if (location.getLocType() == BDLocation.TypeNetWorkException) {
    					sb.append("\ndescribe : ");
    					sb.append("网络不同导致定位失败,请检查网络是否通畅");
    				} else if (location.getLocType() == BDLocation.TypeCriteriaException) {
    					sb.append("\ndescribe : ");
    					sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");
    				}
    				Log.i("BaiduLocationApiDem", sb.toString());
    				loc_info.setText(sb.toString());
    			}
    		}
    	};
    }

    mLocationClient.start()

    start:启动定位SDK。 stop:关闭定位SDK。调用start之后只需要等待定位结果自动回调即可。

    开发者定位场景如果是单次定位的场景,在收到定位结果之后直接调用stop函数即可。

    如果stop之后仍然想进行定位,可以再次start等待定位结果回调即可。

    如果开发者想按照自己逻辑请求定位,可以在start之后按照自己的逻辑请求locationclient.requestLocation()函数,会主动触发定位SDK内部定位逻辑,等待定位回调即可。


    百度定位还可实现位置提醒功能:

    位置提醒最多提醒3次,3次过后将不再提醒。 假如需要再次提醒,或者要修改提醒点坐标,都可通过函数SetNotifyLocation()来实现。

    //位置提醒相关代码
    mNotifyer = new NotifyLister();
    mNotifyer.SetNotifyLocation(42.03249652949337,113.3129895882556,3000,"gps");//4个参数代表要位置提醒的点的坐标,具体含义依次为:纬度,经度,距离范围,坐标系类型(gcj02,gps,bd09,bd09ll)
    mLocationClient.registerNotify(mNotifyer);
    //注册位置提醒监听事件后,可以通过SetNotifyLocation 来修改位置提醒设置,修改后立刻生效。
    //BDNotifyListner实现
    public class NotifyLister extends BDNotifyListener{
           public void onNotify(BDLocation mlocation, float distance){
     	   mVibrator01.vibrate(1000);//振动提醒已到设定位置附近
           }
        }
    //取消位置提醒
    mLocationClient.removeNotifyEvent(mNotifyer);
    这个没有测试,不过应该是没有问题的。

    展开全文
  • Android 定位自己当前位置信息

    千次阅读 2012-09-19 22:22:08
    本篇文章将讲述怎样定位当前位置信息 http://bbs.hiapk.com/thread-4041986-1-1.html   http://shuaji.lexun.cn/article/detail/4698
    展开全文
  • 该问题只需要设置高德地图设置的定位模式就ok了,不要设置高精度模式,其它两种都ok,根据需求自己取。...//设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。 mLocationOption.setLocationMo...
  • 微信定位开启怎么设置(如何开启微信定位功能)微信是一个提供公众平台,朋友圈消息,推送等功能的免费应用程序。爱玩手机的人基本上都下载了微信作为通信的工具。不仅能视频打电话,发信息,还隐藏了很多便利生活的小...
  • 1. 用GPS或者Network获取位置信息 src/com/wind/whereami/LocationSend.java package com.wind.whereami; import android.app.Activity; import android.content.Context; import android.content.Intent; import ...
  • 跳转至位置信息设置界面: /**直接跳转至位置信息设置界面*/ public static void openLocation(Context context) { Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); context.start...
  • 1.添加权限--6.0之后要动态获取,下面会说&lt;uses-permission android:name= "android.permission.ACCESS_FINE_LOCATION"/&gt;2.直接上代码,不多说,代码中注释...//定位权限请求 private stati...
  • 工作中遇到关于地图定位的问题,就随手写了这个demo,希望给大家一些参考
  • 地图组件在业务中往往也需要设置检索框进行位置的检索及定位,这需要用到高德的两个插件,关键字检索插件和根据关键字定位插件 完整代码如下: <template> <div class="app-container"> <div id...
  • map-applet ...6.左下角悬浮标,点击可使定位移动到当前位置(悬浮按钮:当地图中心点偏离当前位置的时候,可以设置按钮,使当前位置为地图中心点); 7.多点定位(多个marker点标记); 8.打卡功能 9.
  • 目标:实现定位到当前所在位置 实现当前定位 获取当前地址,省份,街道等 获取经纬度 修改缩放比例 去除百度地图logo 修改定位图片如下: 效果图: 上代码 public class MainActivity extends AppCompatActivity...
  • 如何在Google Chrome中手动设置位置信息 如果用户位于「主要城市」,通常经 IP 地址获取到的定位信息都是比较接近实际的。但是如果用户处于偏远城市或者郊区,通过 ISP 获取到的位置信息与用户实际位置都会有相当的...
  • uniapp集成方法,跟小程序wx.getLocation不同,可直接获取经纬度及城市信息(当前你也可以先获取... geocode:true,//设置该参数为true可直接获取经纬度及城市信息 success: function (res) { console....
  • 微信小程序 定位 获取经纬度城市街道等位置信息 请先看微信小程序关于定位的API:https://mp.weixin.qq.com/debug/wxadoc/dev/api/location.html#wxgetlocationobject 可以看到:小程序只提供了一个获取地理位置、...
  • Android 获取手机信息设置权限,申请权限,查询联系人,获取手机定位信息 本文目录: 获取手机信息 设置权限 申请权限 查询联系人 获取手机定位信息 调用高德地图,设置显示2个坐标点的位置,以及...
  • 高德地图 ———定位,Marker本期给大家高德地图的展示,和定位,并显示popwindow(当前位置信息),滑动地图实时更新位置信息; 界面预览 具体实现 新司机爬坑 界面预览具体实现 //地图控件和定位必须的 private A...
  • public class MainActivity extends Activity implements View.OnLongClickListener { private static final String TAG = MainActivity.class.getSimpleName();... // 定位相关 LocationClient mLocClient;
  • iOS 10获取定位,根据位置获取天气有时候我们在实现类似于日记本,天气预报等效果的时候,总是免不了获取用户手机当前的地理位置,根据位置进行网络请求获取天气预报,然后呈现给用户。iOS 10里面对用户隐私进行了更...
  • 地图定位请求位置信息在iOS8之后新增两个方法: - (void)requestWhenInUseAuthorization - (void)requestAlwaysAuthorization, 但是在使用这两个方法的时候需要手动在Info.plist文件加两个字段, ...
  • vue-codemirror定位光标位置并在光标处插入信息 业务场景:在代码编辑器外点击按钮,向代码编辑器内的光标处新增一条拼接好的信息。 ps:查了好几天如何定位光标都不行,简直要把我搞死了orz 直接贴代码 <!-- ...
  • 地图实时定位我的位置

    千次阅读 2018-11-11 16:59:00
    首先需要显示地图,请看我的另一篇文章 Android 使用百度地图API来显示地图 然后实时获取定位信息中的经度和纬度, Android 获取LocationProvider以及获取... 设置定位数据,并配置定位图层的信息 关闭定位图...
  • js导航定位指定位置

    千次阅读 2017-05-04 16:25:05
    在项目中遇到一个导航点击,定位到具体位置的上,类似这种效果通常按照我之前的做法是在左侧的点击事件里添加html锚点,右侧的A B位置ID设置为和左侧href锚点值一样即可。但是这样做有一个缺陷,就是点击左侧导航的...
  • 是指使用什么方式定位还是指离线定位是使用之前的地理位置信息) 在MyApplicationLocation中部分代码如下: ``` public LocationClient mLocationClient = null; private static MyApplicationLocation instance =...
  • ✎ iOS14 新增用户大致位置选项可供用户选择(原因是大多数 App 实际上并不需要获取用户到用户最准确的定位信息。) iOS14 授权弹窗新增的 Precise的开关默认会选中精确位置。用户通过这个开关可以进行更改,当把这...
  • 但是不同的是这个配置是必须的,如果不进行配置则默认情况下应用无法使用定位服务,打开应用不会给出打开定位服务的提示,也无法获取到位置信息,除非安装后自己设置此应用的定位服务。同时,在应用程序中需要根据...
  • 当用户点击了取消,拒绝了位置信息的请求。如下图所示,提醒用户去设置地理位置授权,如下图所示, 如果用户没去设置的话,每次只要用户点击进入该页面都会有这个弹窗出现。 相关代码如下所示: wxml: <!-- 弹...
  • Android开发之高德定位参数设置

    千次阅读 2019-03-20 17:56:46
    * 根据控件的选择,重新设置定位参数 */ private void resetOption() { AMapLocationClientOption mOption = new AMapLocationClientOption(); // 设置是否需要显示地址信息 mOption.setNeedAddress(true);...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 324,260
精华内容 129,704
关键字:

怎样设置定位位置信息