之前简单弄过百度地图,虽然没上线,但是也算用过了,今天朋友问,就顺便写一个集成
官方的集成文档:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/introduction
第一步:获取应用key
登录到百度地图API控制台,点击右上角的lbs开发者,此处可以看到你的应用以及对应的key
点击创建应用,输入应用的基本信息,应用类型选择AndroidSDK,sha1可以在eclipse上面看,具体操作:点击eclipse的window--prefrences--android--build即可看到
然后提交,提交之后就可以看到对应的应用信息和key
第二步:jar---so文件
将对应文件拷贝到工程Libs下面,文章后面我会添加下载链接
第三部:最基本的地图
到了这一步,就全是代码了
首先 在你的清单文件的application中注册百度地图 ,添加以下代码
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="控制台中的key" /> 此处复制一定看好了,别处一点错,不然就是网格,看不到图 我就是多复制了一个空格,卡了很久
</application>
然后直接复制下面的权限 到清单文件
<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" />
复制到清单文件中即可
然后在布局文件中添加地图View
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
然后就是activity
MapView mMapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在setcontentview之前
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
}
@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();
}
}
完成这一步之后,运行你的程序,就可以看到基本的地图了,此时定位是在北京中心
第四步:最基础的功能使用
不多废话,直接从ec中复制代码过来
移动地图到某位置
——————————————————————————————————————————————————————————————————————
/**
* 将地图移动到以某点为中心的位置
*/
private void moveto(){
double latitude = 30.648905;
double longitude = 104.096476;
LatLng latLngs;
LatLngBounds bounds = null;
OverlayOptions overlayOptions_marker;
bitmapDescriptor = BitmapDescriptorFactory
.fromResource(R.drawable.tip);
latLngs = new LatLng(latitude, longitude);
overlayOptions_marker = new MarkerOptions().position(latLngs)
.icon(bitmapDescriptor);
map.addOverlay(overlayOptions_marker);
bounds = new LatLngBounds.Builder().include(latLngs).build();
MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory
.newLatLngBounds(bounds);
map.animateMapStatus(mapStatusUpdate, 1000);
mapStatusUpdate_zoom = MapStatusUpdateFactory.zoomTo(20);//缩放等级
map.setMapStatus(mapStatusUpdate_zoom);
mapView.showZoomControls(false);//显示缩放大小图标
}
————————————————————————————————————————————————————————————
/**
* 添加位置标注
*/
private void addTip() {
LatLng point = new LatLng(30.648905, 104.096476);
BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.tip);
OverlayOptions option = new MarkerOptions().position(point).icon(icon);
map.addOverlay(option);
}
————————————————————————————————————————————————————————————
/**
* 添加菱形覆盖
*/
private void addShape() {
LatLng top = new LatLng(30.649795, 104.0958);
LatLng buttom = new LatLng(30.648101, 104.095369);
LatLng left = new LatLng(30.64896, 104.094682);
LatLng right = new LatLng(30.648898, 104.096366);
List<LatLng> lats = new ArrayList<LatLng>();
lats.add(top);
lats.add(right);
lats.add(buttom);
lats.add(left);
OverlayOptions options = new PolygonOptions().points(lats).stroke(new Stroke(3, 0xFF0492FB))
.fillColor(0x220492FB);
map.addOverlay(options);
}
————————————————————————————————————————————————————————————
/**
* 添加文字标注
*/
private void addText() {
LatLng text = new LatLng(30.650795, 104.0958);
OverlayOptions textop = new TextOptions().bgColor(0x220492FB).fontSize(60).fontColor(0xBB000000).text("文字标注")
.position(text);
map.addOverlay(textop);
}
————————————————————————————————————————————————————————————
/**
* 添加类似弹窗的覆盖物
*/
private void addAlert(){
Button button = new Button(BaseMapActivity.this);
button.setTextColor(0xBB000000);
button.setText("弹窗覆盖物");
button.setBackgroundResource(R.drawable.button_background);
LatLng lt = new LatLng(30.650295, 104.0958);
InfoWindow infoWindow = new InfoWindow(button, lt, -60);
map.showInfoWindow(infoWindow);
}
————————————————————————————————————————————————————————————
最后:本文下方会添加我写的demo下载链接
http://download.youkuaiyun.com/detail/qq_24179679/9626530