百度地图的API 更新速度 也是贼快,从自己刚开始用百度SDK,到现在已经跟新了第三次了,所以以前做过的东西也记不住了,但是只要根据百度的SDK 和 官方例子走流程,很快又能熟悉回来,自此写下这次试用百度SDK问题。
1.SDKInitializer.initialize om.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create()
从百度官网下载下来SDK,根据开发指南,创建项目->开发者生成KEY->导包-写地图代码。一步一步跟着写过来,但是还是出现异常。百度得之:官方下载的lib有问题,要下载demo里面的Lib文件。
2.百度地图显示网格,没有绘图
程序没有出现闪退了,但是程序出现的是灰色相见的网格。并没有绘图,于是感觉是因为自己的KEY 与项目的包名和签名文件不对应,于是在百度开发者控制台更改签名文件为调试Deubug的SHA1得以解决
3.定位
程序要运用到地位功能,于是百度定位功能,定位功能被独立成一个功能,lib包 最新为6.12
http://developer.baidu.com/map/index.php?title=android-locsdk/guide/v5-0
参考 百度 sdk 。跟新至loc6.12 。 替换了以前的5.0的旧API. 然后看百度定位用法,以及官方例子上,如何添加到百度图层的用法。
重新定位:
就是将定位重新调用一次。
4.添加覆盖物:
private void initOverlay(){
//定义Maker坐标点 lat 纬度 lng 经度
LatLng point = new LatLng(29.599608,106.503920);
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.ic_map_mode_category_food_normal);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmap);
//在地图上添加Marker,并显示
mBaiduMap.addOverlay(option);
}
注意:经纬度位置,特别注意位置的小数点,位数 差0.1 位置都很大
5.点击事件:
mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(final Marker marker) {
Button button = new Button(getApplicationContext());
button.setBackgroundResource(R.drawable.tip_pointer_button_normal);
OnInfoWindowClickListener listener = null;
button.setText("更改图标");
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
BitmapDescriptor bd = BitmapDescriptorFactory
.fromResource(R.drawable.ic_map_mode_category_food_current);
marker.setIcon(bd);
mBaiduMap.hideInfoWindow();
}
});
LatLng ll = marker.getPosition();
mInfoWindow = new InfoWindow(button, ll, -77);
mBaiduMap.showInfoWindow(mInfoWindow);
return true;
}
});
6.
Android中百度地图计算MapView任意位置的经纬度
SDK版本:3.2.0
百度地图sdk只提供了直接获取MapView中心点经纬度的方法,求其他地方的经纬度要自己算。获取任一点经纬度的方法为:
mMap.getProjection().fromScreenLocation(new Point(x, y));
计算的准不准看一下就知道啦~这里用直接获取到的中心点的经纬度和通过上面方法获取到的对比一下。
获取中心点经纬度的方法为:
mMap = mMapView.getMap();
mMapStatus = mMap.getMapStatus();
LatLng center = mMapStatus.target;
中心点在MapView上的位置:
Point point = mapStatus.targetScreen;
总结:
根据百度的API 和 DEMO 能很快的找出自己需要得类,以及实现