百度定位VS高德定位

高德  下载

添加 AMap_Location  jar包,在AndroidManifest 添加权限,并在 application下 添加申请到的 key

这里还可以添加service,不过我发现不添加也没有影响

<service android:name="com.amap.api.location.APSService"></service>

之后就可以使用定位了,定位得到的 AMapLocation 对象 直接tostring就能得到所有的定位信息。

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationListener;

public class LocationActivity extends AppCompatActivity {

    private TextView tv;
    public AMapLocationClient LocationClient = null;
    public AMapLocationListener LocationListener = new AMapLocationListener() {
        @Override
        public void onLocationChanged(AMapLocation aMapLocation) {
            if (aMapLocation != null) {
                if (aMapLocation.getErrorCode() == 0) {
                    tv.setText(aMapLocation.toString());
                }
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_location);
        tv = (TextView) findViewById(R.id.tv);
        LocationClient = new AMapLocationClient(getApplicationContext());
        LocationClient.setLocationListener(LocationListener);
    }

    public void btn(View view) {
        switch (view.getId()) {
            case R.id.btn1:
                LocationClient.startLocation();
                break;

            case R.id.btn2:
                LocationClient.stopLocation();
                break;
        }
    }
}

百度  下载

百度定位的sdk 除了jar包还有so库,所以添加的东西要比高德多。

在AndroidManifest 添加权限,并在 application下 添加申请到的 key,而百度这里必须添加service

<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service>

之后就可以定位了

这里比高德稍微麻烦一点,还要配置定位SDK参数 LocationClientOption,不然最多只能拿到经纬度,而获取不到具体信息

而且获取到的 BDLocation 对象,不能tostring,只能按需求取数据

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;

public class BaiduActivity extends AppCompatActivity {

    private TextView tv;
    private LocationClient locationClient = null;
    private BDLocationListener bdLocationListener = new BDLocationListener() {
        @Override
        public void onReceiveLocation(BDLocation bdLocation) {
            if (null != bdLocation && bdLocation.getLocType() != BDLocation.TypeServerError) {
                tv.setText(bdLocation.getLocType() + bdLocation.getAddrStr() + " " + bdLocation.getBuildingName()
                        + " " + bdLocation.getDistrict() + " " + bdLocation.getFloor() + " " + bdLocation.getStreet()
                        + " " + bdLocation.getTime()
                );
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_baidu);

        tv = (TextView) findViewById(R.id.tv);

        locationClient = new LocationClient(getApplicationContext());
        locationClient.registerLocationListener(bdLocationListener);

        LocationClientOption clientOption = new LocationClientOption();
        clientOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
        clientOption.setCoorType("bd09ll");
        clientOption.setIsNeedAddress(true);
        clientOption.setIsNeedLocationDescribe(true);
        clientOption.setIsNeedLocationPoiList(true);

        locationClient.setLocOption(clientOption);
    }

    public void btn(View view) {
        switch (view.getId()) {
            case R.id.btn1:
                locationClient.start();
                break;

            case R.id.btn2:
                locationClient.stop();
                break;
        }
    }
}

简单对比

 
Sdk大小


难易


模拟器


文档


室内


位置提醒


同步异步


百度


511 KB


适中


支持


详细


支持


支持


异步


高德


259 KB


简单


貌似不支持


详细


有另外的室内定位sdk


不支持


开启定位异步

关闭定位同步

值得一提的是 高德在直接LocationClient.stopLocation() 时,会明显卡顿,说明阻塞了主线程,还是开新线程关闭好

获取key的方法

打开cmd,定位到.android文件夹下,输入cd .android

keytool -list -v -keystore C:\AndroidProject\demonkey.jks

然后输入密码  复制sha1就行了

时间: 2024-10-12 17:48:38

百度定位VS高德定位的相关文章

Android定位开发之百度定位、高德定位、腾讯定位,三足鼎立一起为我所用!

这几天的项目不是非常紧.于是想为未来可能要做的项目做一些技术储备. 下一个项目非常有可能是定位开发,须要用到手机定位功能,于是查了查如今比較流行的第三方定位,最火的基本上就是百度定位>高德定位>腾讯定位了. 想了想不如做一个DEMO把三种定位方式混合一下试试. BaiduLocTool.java package com.dhcc.mixlocation; import android.content.Context; import com.baidu.location.BDLocation;

高德,百度,Google地图定位偏移以及坐标系转换

一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS-84坐标系的:但是在国内是不允许直接用WGS84坐标系标注的,必须经过加密后才能使用: 2.GCJ-02坐标系,又名"火星坐标系",是我国国测局独创的坐标体系,由WGS-84加密而成,在国内,必须至少使用GCJ-02坐标系,或者使用在GCJ-02加密后再进行加

android:应用程序内定位处理,百度定位,高德定位,系统定位处理.

文章来自:http://blog.csdn.net/intbird 关于定位的几点体验 地图上使用定位 定位信息说明 应用内确保定位返回结果思考 应用内使用定位服务代码 代码基础使用方法 关于定位的几点体验: 百度定位:定位返回很快,很及时,推荐使用,单次定位,能很大程度的保证应用获取位置,5.1的定位有了位置提醒; 高德定位:和系统的很像,需要设置定位的米和时间,有时候不返回,有时候返回一大推,不清楚它机制是什么,不推荐; 系统定位:单纯的户外使用返回还是很不错的,如果是做一个骑行记录轨迹的,

关于用模拟器运行百度地图API无法定位的问题 - 不能用模拟器

模拟器是没有办法定位,当你加入定位模块的时候,传出的参数都是空的. 定位的这个方法函数,是通过回调接口来实现,而且触发该事件的时候,需要经纬度位置改变.官方文档写得很清楚,简单点来说,就是你没有GPS定位设备就没有办法实现(只能真机测试),GPS定位是实时监控定位,随时都在接收和发射你的位置信息,只有不断的改变才能触发该定位事件.(不得不说百度的开发人员很仔细) 转载自 http://blog.csdn.net/chuchu521/article/details/7980270 最后一段 关于用

HTML5 调用百度地图API地理定位

<!DOCTYPE html> <html> <title>HTML5 HTML5 调用百度地图API地理定位实例</title> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="ht

集成百度地图API实现定位

一.百度地图API获取定位 AndroidManifest.xml必须配置: 定位服务 <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" android:exported="false"> <intent-filter > <action android:nam

[android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

       前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Interest)搜索.该篇讲述定位当前自己的位置及使用getLastKnownLocation获取location总时为空值的问题. 一. 定位当前位置的原理及实现       定位当前位置可以通过LBS(Location Based Service,基于位置的服务),主要工作原理是利用无线网络Network或GPS定

android使用百度地图SDK获取定位信息

本文使用Android Studio开发. 获取定位信息相对简单,我们只需要如下几步: 第一步,注册百度账号,在百度地图开放平台新建应用.生成API_KEY.这些就不细说了,请前往这里:http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/key 第二步,下载sdk,地址:http://lbsyun.baidu.com/index.php?title=android-locsdk/geosdk-android-download

PHP利用百度地图API进行IP定位和GPS定位

最近在做一个手机端的webapp地图应用,而核心内容当然是定位了,但是定位的话有几种方式,IP定位,GPS定位,基站定位(这个貌似webapp用不了), 那么剩下核心的gps定位和ip定位了,我们知道,html5有定位API,但是该API拿到的GPS数据是硬件坐标,无法直接显示在地图上. 后来上百度LBS云看到有地图IP定位API和GPS坐标转换API,地址:http://developer.baidu.com/map/ 百度地图API的调用需要申请KEY,这里就不具体介绍了,直接贴上本人写了两