百度地图定位+卫星定位
最新推荐文章于 2021-12-04 20:57:02 发布
主布局
主布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<com.baidu.mapapi.map.MapView
android:id="@+id/id_bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
</RelativeLayout>
菜单布局
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.baway.liujie.MainActivityk" >
<item
android:id="@+id/map_common"
android:showAsAction="never"
android:title="普通地图"/>
<item
android:id="@+id/map_site"
android:showAsAction="never"
android:title="卫星地图"/>
<item
android:id="@+id/map_traffic"
android:showAsAction="never"
android:title="实时交通(off)"/>
<item
android:id="@+id/map_location"
android:showAsAction="never"
android:title="我的位置"/>
</menu>
主要代码
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.Toast;
public class MainActivity extends Activity {
private MapView mMapView;
private BaiduMap mBbaiduMap;
/**
* 定位相关
*/
private LocationClient mLC;
private MyLocatoinListener mLL;
//记录是否第一次
private boolean isFirstIn = true;
//记录经纬度
private double mLatitude;
private double mLongtiuc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
// 获取地图控件引用
mMapView = (MapView) findViewById(R.id.id_bmapView);
mBbaiduMap = mMapView.getMap();
// 初始化地图一开始的比例
initView();
// 初始化定位
initLocation();
}
private void initLocation() {
mLC = new LocationClient(this);
mLL = new MyLocatoinListener();
// 注册
mLC.registerLocationListener(mLL);
//
LocationClientOption option = new LocationClientOption();
option.setCoorType("bd09ll");
option.setIsNeedAddress(true);
option.setOpenGps(true);
option.setScanSpan(1000);
mLC.setLocOption(option);
}
private void initView() {
MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);
mBbaiduMap.setMapStatus(msu);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
// 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
// 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
/**
* 自带按钮菜单
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_activityk, menu);
return true;
}
/**
* 切换模式点击监听
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.map_common:
mBbaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
break;
case R.id.map_site:
mBbaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
break;
case R.id.map_traffic:
if (mBbaiduMap.isTrafficEnabled()) {
mBbaiduMap.setTrafficEnabled(false);
item.setTitle("实时交通(off)");
} else {
mBbaiduMap.setTrafficEnabled(true);
item.setTitle("实时交通(on)");
}
break;
case R.id.map_location:
centerToMyLoation();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
/**
* 定位到我的位置
*/
private void centerToMyLoation() {
LatLng latLng = new LatLng(mLatitude, mLongtiuc);
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
mBbaiduMap.animateMapStatus(msu);
}
/**
* 定位
*/
private class MyLocatoinListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
MyLocationData data = new MyLocationData.Builder()//
.accuracy(location.getRadius())//
.latitude(location.getLatitude())//
.longitude(location.getLongitude())//
.build();
mBbaiduMap.setMyLocationData(data);
// MyLocationConfiguration config=new
// MyLocationConfiguration(LocationMode.NORMAL, arg1, arg2)
mLatitude=location.getLatitude();
mLongtiuc=location.getLongitude();
if (isFirstIn) {
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
mBbaiduMap.animateMapStatus(msu);
isFirstIn = false;
Toast.makeText(getApplicationContext(), location.getAddrStr(), Toast.LENGTH_SHORT).show();
}
}
}
@Override
protected void onStart() {
super.onStart();
// 开启定位
mBbaiduMap.setMyLocationEnabled(true);
if (!mLC.isStarted())
mLC.start();
}
@Override
protected void onStop() {
super.onStop();
// 停止定位
mBbaiduMap.setMyLocationEnabled(false);
mLC.stop();
}
}
当然清单文件也是很重要
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<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="43ACxCeh2tpdSV8jL3xxaGm97XA85I8j" />
<activity
android:name=".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>
<activity
android:name=".MainActivityk"
android:label="@string/title_activity_main_activityk" >
</activity>
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
</service>
</application>
菜单是menu文件夹下的,手机没有菜单键可以用button按钮实现
评论 1
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包