android js gps定位,Android中的定位Demo

本文介绍了Android百度地图定位Demo的实现步骤。包括申请key值、获取SHA1值,下载百度地图jar包并复制到项目libs下,在AndroidManifest.xml文件中进行权限、API_KEY和定位service等配置,编写定位页面布局文件,最后给出实现定位功能的代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以按照这上面的流程去申请key值。在获取SHA1值的时候,推荐使用给的第一种方法(在cmd命令中获取,我之前使用的是从Eclipse>  Window > Preferences > Android > Build复制的,但是在使用的时候出现地图加载错误)。

2. 下载百度地图提供的jar包。

07f9727e95199d88b305e1f1134db803.png

勾选要使用的功能,然后下载开发包即可。我这里,使用了基础地图和定位功能,下载开发包之后,解压开,把 libs 文件夹下的内容,全部复制到你的Android项目的libs下就可以使用了。

3. 接下来需要在AndroidManifest.xml文件中,进行属性。

(1) 定位需要的权限配置

(2) 在 application 标签下配置

android:name="com.baidu.lbsapi.API_KEY"

android:value="这里是你申请的 key" />

(3) 配置定位 service

android:name="com.baidu.location.f"

android:enabled="true"

android:process=":remote" >

到这里AnroidManifest.xml文件里的配置工作就了。

4. 第三步写一下定位页面的布局文件

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:layout_width="match_parent"

android:layout_height="50dp"

android:gravity="center"

android:textSize="20sp"

android:text="定位页面"/>

android:id="@+id/mapview"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:clickable="true"

>

android:id="@+id/goback"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="回到当前位置"/>

5. 最后就要写实现代码了

public class LocationActivity extends Activity {

private MapView mMapView = null;

private BaiduMap mBaiduMap;

private LocationClient mLocationClient = null;

private BDLocationListener listener = new MyLocationListener();

private Button goBack;

private BDLocation location;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

// 在使用SDK各组件之前初始化context信息,传入ApplicationContext

// 注意该方法要再setContentView方法之前实现

SDKInitializer.initialize(getApplicationContext());

setContentView(R.layout.activity_location);

mLocationClient = new LocationClient(this);

mLocationClient.registerLocationListener(listener);

mMapView = (MapView) findViewById(R.id.mapview);

mBaiduMap = mMapView.getMap();

mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);

// 开启定位图层

mBaiduMap.setMyLocationEnabled(true);

//定位的方法

findLocation();

goBack = (Button) findViewById(R.id.goback);

location = new BDLocation();

goBack.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

findLocation();

}

});

}

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

// 关闭定位图层

mBaiduMap.setMyLocationEnabled(false);

mMapView.onDestroy();

mLocationClient.stop();

}

@Override

protected void onResume() {

// TODO Auto-generated method stub

super.onResume();

mMapView.onResume();

}

@Override

protected void onPause() {

// TODO Auto-generated method stub

super.onPause();

mMapView.onPause();

}

//定位方法封装

public void findLocation() {

if (mLocationClient.isStarted()) {

mLocationClient.stop();

}

LocationClientOption option = new LocationClientOption();

option.setOpenGps(true);// 打开gps

option.setCoorType("bd09ll"); // 设置坐标类型

option.setScanSpan(0);

mLocationClient.setLocOption(option);

// 开始定位

mLocationClient.start();

}

class MyLocationListener implements BDLocationListener {

@Override

public void onReceiveLocation(BDLocation location) {

// TODO Auto-generated method stub

// map view 销毁后不在处理新接收的位置

if (location == null || mMapView == null) {

return;

}

MyLocationData locData = new MyLocationData.Builder()

.accuracy(location.getRadius())

.direction(100).latitude(location.getLatitude())

.longitude(location.getLongitude())

.build();

mBaiduMap.setMyLocationData(locData);

LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());

MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);

mBaiduMap.animateMapStatus(u);

}

}

}

这样的一个Android定位的Demo就写好了。

使用GPS 定位,首先,需要在清单文件(AndroidManifest.xml)中注册获取定位的权限: **1.获取位置管理器对象LocationManager** ``` import android.location.LocationManager; LocationManager lm; // lm =(LocationManager) this.getSystemService(Context`.LOCATION_SERVICE); // ``` **2.一般使用LocationManager的getLastKnownLocation(LocationManager.GPS_PROVIDER);方法获取Location对象** ``` String provider = LocationManager.GPS_PROVIDER;// 指定LocationManager的定位方法 Location location = locationManager.getLastKnownLocation(provider);// 调用getLastKnownLocation()方法获取当前的位置信息 ``` 不过不建议用这种方法,有几点原因: 一,在很多提供定位服务的应用程序中,不仅需要获取当前的位置信息,还需要监视位置的变化,在位置改变时调用特定的处理方法 ,其中LocationManager提供了一种便捷、高效的位置监视方法requestLocationUpdates(),可以根据位置的距离变化和时间间隔设定,产生位置改变事件的条件,这样可以避免因微小的距离变化而产生大量的位置改变事件 。 二,当你开启GPS,provider的值为GPS。这时的定位方式为GPS,由于GPS定位慢,所以它不可能立即返回你一个Location对象,所以就返回null了。 **3.推荐locationManager.requestLocationUpdates();方法** LocationManager中设定监听位置变化的代码如下: ``` lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10,new MyLocationListener()); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值