现存问题:
一个activity中包含多个fragment,其中一个fragment里面放了mapView,来回切换fragment
一、切换地图所在的fragment黑屏。MapView换成TextureMapView,黑屏没了(其实是换成了白屏)
二、切换应用重启:http://blog.csdn.net/easyer2012/article/details/47316419
三、切换不显示百度地图中的街道、建筑物名称、地铁点:http://blog.csdn.net/easyer2012/article/details/47316419
导入百度地图库和jar包时注意:
1、jar包的位置放在 project/libs下,so库文件放在src/main/jniLibs文件夹下,选中jar,右键as library
2、或者jar,和so库都放在libs下,然后在module中的build.gradle文件夹里,android{}结构里加入
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.jiaxun.mbmap"
minSdkVersion 17
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main() {
jniLibs.srcDirs = ['libs']//加入这个
}
}
}
View child = mMapView.getChildAt(1);
if (child != null && (child instanceof ImageView || child instanceof ZoomControls))
{
//child.setVisibility(View.INVISIBLE);
}
//不显示百度地图Logo
mMapView.removeViewAt(1);
//地图上比例尺
//mMapView.showScaleControl(false);
// 隐藏缩放控件
//mMapView.showZoomControls(false);
自定义百度地图中的marker图标:将自定义布局转换为一个Bitmap
View markView = LayoutInflater.from(getActivity()).inflate(R.layout.mark_view, null);
布局文件 mark_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/camera_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textColor="@color/top_title_bg_color"
android:textSize="15sp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:scaleType="centerCrop"
android:src="@drawable/icon_mark"/>
</LinearLayout>
private Bitmap getBitmapFromView(String num, View view)
{//将一个view的对象转换成一个bitmap形的对象。
TextView textView = view.findViewById(R.id.mark_num);
textView.setText(num);
ImageView imageView = view.findViewById(R.id.mark_img);
imageView.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.icon_mark));
view.destroyDrawingCache();
view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.UNSPECIFIED);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.setDrawingCacheEnabled(true);
Bitmap bitmap = view.getDrawingCache();
return bitmap;
}
private Bitmap getViewBitmap(String num, View markView)
{
markView.destroyDrawingCache();
TextView textView = markView.findViewById(R.id.mark_num);
textView.setText(num);
ImageView imageView = markView.findViewById(R.id.mark_img);
textView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.top_title_bg_color));
imageView.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.icon_mark));
markView.setDrawingCacheEnabled(true);
markView.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
markView.layout(0, 0,
markView.getMeasuredWidth(),
markView.getMeasuredHeight());
markView.buildDrawingCache();
Bitmap cacheBitmap = markView.getDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);
return bitmap;
}
MarkerOptions option = new MarkerOptions().icon(BitmapDescriptorFactory
.fromBitmap(getViewBitmap(number, markView))).position(ptCenter);
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/offlinemap
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-map/offlinemap