Android调用百度地图API实现——实时定位代码
2015-04-25 17:25
585 查看
使用代码如下: MainActivity.class package yu.hong.map; import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.GeoPoint; import com.baidu.mapapi.LocationListener; import com.baidu.mapapi.MKGeneralListener; import com.baidu.mapapi.MKLocationManager; import com.baidu.mapapi.MapActivity; import com.baidu.mapapi.MapController; import com.baidu.mapapi.MapView; import com.baidu.mapapi.MyLocationOverlay; import android.location.Location; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; public class MainActivity extends MapActivity { // 初始为于勉庄 private double userLongitude = 33.49087222349736 * 1E6;// 纬度 private double userLatitude = 115.27130064453128 * 1E6;// 经度 // 添加百度相关控件 private MapView mapView; private BMapManager bMapManager;// 加载地图的引擎 // 百度地图上的key值 private String keyString = "01331AFA954E7E300428A5F0C9C829E0E16F87A3"; // 在百度地图上添加一些控件,例如放大、缩小 private MapController mapController; private MKLocationManager mLocationManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 实例化控件 mapView = (MapView) this.findViewById(R.id.bmapView); bMapManager = new BMapManager(MainActivity.this); // 必须要加载key bMapManager.init(keyString, new MKGeneralListener() { // key值不正确 @Override public void onGetPermissionState(int arg0) { if (arg0 == 300) { Toast.makeText(MainActivity.this, R.string.key_error, Toast.LENGTH_LONG).show(); } } //网络出错 @Override public void onGetNetworkState(int arg0) { Toast.makeText(MainActivity.this, R.string.net_error, Toast.LENGTH_LONG).show(); } }); this.initMapActivity(bMapManager); mapView.setBuiltInZoomControls(true);// 表示可以设置缩放功能 mapController = mapView.getController(); // 初始化Location模块 mLocationManager = bMapManager.getLocationManager(); // 通过enableProvider和disableProvider方法,选择定位的Provider mLocationManager.enableProvider(MKLocationManager.MK_NETWORK_PROVIDER); mLocationManager.disableProvider(MKLocationManager.MK_GPS_PROVIDER); //返回手机位置 mLocationManager.requestLocationUpdates(locationListener); mLocationManager.setNotifyInternal(5, 2); // 添加定位图层 MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView); myLocationOverlay.enableMyLocation(); // 启用定位 myLocationOverlay.enableCompass(); // 启用指南针 mapView.getOverlays().add(myLocationOverlay); mapView.setTraffic(true);// 交通地图 // mapView.setSatellite(true);// 卫星地图 mapController.setZoom(15);// 设置缩放级别 mapView.invalidate();// 刷新地图 } //获取经度纬度 private LocationListener locationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { if (location != null) { userLatitude = location.getLatitude() * 1E6; userLongitude = location.getLongitude() * 1E6; GeoPoint mypoint = new GeoPoint((int)(userLatitude), (int)(userLongitude)); mapView.getController().animateTo(mypoint); } } }; // 销毁 @Override protected void onDestroy() { super.onDestroy(); if (bMapManager != null) { bMapManager.destroy(); bMapManager = null; } } // 停止 @Override protected void onPause() { super.onPause(); if (bMapManager != null) { mLocationManager.removeUpdates(locationListener); bMapManager.stop(); } } // 重启 @Override protected void onResume() { super.onResume(); if (bMapManager != null) { bMapManager.start(); } } // @Override protected boolean isRouteDisplayed() { return false; } // Menu // 当点击Menu按钮时,调用该方法 @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 1, 1, R.string.exit).setIcon( android.R.drawable.ic_menu_close_clear_cancel); return super.onCreateOptionsMenu(menu); } @Override public boolean onContextItemSelected(MenuItem item) { // 选中某个菜单项 if (item.getItemId() == 1) { MainActivity.this.finish(); } return super.onOptionsItemSelected(item); } // 返回键 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { finish(); } return super.onKeyDown(keyCode, event); } } activity_mainmain.xml <LinearLayout 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" > <!-- 添加显示百度地图的控件 --> <com.baidu.mapapi.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" tools:context=".MainActivity" /> </LinearLayout> AndroidManifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="yu.hong.map" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="15" /> <!--添加百度地图开发授权 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!--添加对屏幕的支持 --> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" /> <application android:icon="@drawable/ic_maplauncher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>转载地址:http://blog.sina.com.cn/s/blog_6e334dc7010160p9.html
相关文章推荐
- Android调用百度地图API实现——实时定位代码
- 如何使用Android调用百度地图API——实时定位
- [置顶] Android移动开发-在Android项目里调用基于百度地图API实现定位
- PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码
- unity3d调用Android的java代码实现地图的连接
- Android调用百度地图Web端接口,实现百度定位、导航
- Android调用系统相机以及拉取本地相册的功能实现以及代码分析
- Android调用百度地图app , 实现百度定位、导航
- android 指纹识别调用实现方法及示例代码
- Android 实现百度地图API调用
- Android_高德地图实现定位模板代码
- Android App应用调用已安装市场,进行软件评分的功能代码实现
- Android平台Camera实时滤镜实现方法探讨(十)--代码地址以及简单介绍(20160118更新)
- Android底层调用C代码(JNI实现)
- React Native 调用原生Android/iOS代码实现拨号功能
- JNI NDK (AndroidStudio+CMake )实现Java调用C C++代码流程
- JNI NDK (AndroidStudio+CMake )实现C C++调用Java代码流程
- Android几行代码实现实时监听微信聊天
- android实现定位与目的地的导航示例代码
- Apache Cordova 安卓android上传图片或者文件 调用后台服务实现java代码 ft.upload(imageURI, uri, that.uploadSuccess, that.