在地图开发这里摸索了好几天,网上也看过不少的demo.但与自己想要的那种效果并不符合,趁闲暇之际,写一系列的博客来记录下自己开发经历:
第一步
:当然是要有自己的百度地图api账号了,没有的可以去这里注册:http://lbsyun.baidu.com/index.php?title=android-locsdk
第二步:【配置】
1.首先应该要获得秘钥key,这个是使用百度地图的基本项!
点击申请秘钥key,然后点击创建应用
这里:
http://lbsyun.baidu.com/apiconsole/key/create 有详细的配置和文档信息。这里就不演示了。
2.配置权限
<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" />3.配置清单
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="你自己的key"/>4.布局文件
<com.baidu.mapapi.map.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true"> </com.baidu.mapapi.map.MapView>5.JAVA文件
import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.BitmapDescriptorFactory; import com.baidu.mapapi.map.LogoPosition; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.Marker; import com.baidu.mapapi.map.MarkerOptions; import com.baidu.mapapi.map.OverlayOptions; import com.baidu.mapapi.model.LatLng; import static android.R.attr.paddingBottom; import static android.R.attr.paddingLeft; import static android.R.attr.paddingRight; import static android.R.attr.paddingTop; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private MapView mMapView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.map); //设置百度地图图标显示位置 mMapView.setLogoPosition(LogoPosition.logoPostionleftBottom); int mapLevel = mMapView.getMapLevel(); Log.d(TAG, "onCreate: mapLevel:" + mapLevel); init(); } private void init() { BaiduMap baiduMap = mMapView.getMap(); //普通地图 baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); //卫星地图 // baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); //空白地图, 基础地图瓦片将不会被渲染。在地图类型中设置为NONE,将不会使用流量下载基础地图瓦片图层。 // 使用场景:与瓦片图层一起使用,节省流量,提升自定义瓦片图下载速度。 // baiduMap.setMapType(BaiduMap.MAP_TYPE_NONE); //开启交通图 baiduMap.setTrafficEnabled(true); //地图Logo不允许遮挡,参数paddingLeft、paddingTop、paddingRight、paddingBottom // 参数表示距离屏幕边框的左、上、右、下边距的距离,单位为屏幕坐标的像素密度 baiduMap.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom); //定义Maker坐标点 LatLng point = new LatLng(39.963175, 116.400244); //构建Marker图标 BitmapDescriptor bitmap = BitmapDescriptorFactory .fromResource(R.mipmap.ic_launcher); //构建MarkerOption,用于在地图上添加Marker OverlayOptions option = new MarkerOptions() .position(point) //设置marker的位置 .icon(bitmap)//设置marker图标 .zIndex(9) //设置marker所在层级 .draggable(true); //设置手势拖拽 //将marker添加到地图上 Marker marker = (Marker) (baiduMap.addOverlay(option)); //在地图上添加Marker,并显示 baiduMap.addOverlay(option); //调用BaiduMap对象的setOnMarkerDragListener方法设置marker拖拽的监听 baiduMap.setOnMarkerDragListener(new BaiduMap.OnMarkerDragListener() { public void onMarkerDrag(Marker marker) { //拖拽中 } public void onMarkerDragEnd(Marker marker) { //拖拽结束 } public void onMarkerDragStart(Marker marker) { //开始拖拽 } }); } @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(); } }这里就是实现简单的基础地图显示功能。有不足之处敬请谅解。如有疑问可加QQ:1021263773 探讨交流
Demo地址:https://github.com/ChunweiDu/BaseMapDemo