我希望我的地图显示工具栏而不点击标记。但是在我点击标记之前它总是隐藏起来。请帮我。我试过用谷歌搜索得到的方式。但没有人工作。
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.addMarker(new MarkerOptions().position(new LatLng(latitude,longitude)).icon(BitmapDescriptorFactory.defaultMarker()));
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
mMap.getUiSettings().setMapToolbarEnabled(true);
return false;
}
});
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.getUiSettings().setAllGesturesEnabled(false);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 16));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 16));
}
布局
<fragment
android:id="@+id/mapFragment"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="200dp"/>
compile&#39; com.google.android.gms:play-services-maps:10.2.0&#39;
compile&#39; com.google.android.gms:play-services-location:10.2.0&#39;
答案 0 :(得分:1)
您无法手动显示该内容,因为点击标记时显示的叠加层会在现场隐藏时被创建和销毁。
您可以使用2 ImageView
在地图上创建叠加层,例如:
// Directions
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?saddr=21.5, 0.15&daddr=-49.5, 0.15"));
startActivity(intent);
// Default google map
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?q=loc:51.5, 0.125"));
startActivity(intent);
根据您的标记getPosition()和用户的位置更改坐标,并在点击时调用相应的意图
答案 1 :(得分:1)
您可以创建带有图标的自定义标记,并根据您的要求绘制文本。
注意:强>
但是使用以下示例,您需要根据自定义 您的具体要求
mGoogleMap.addMarker(new MarkerOptions()
.position(LatLonPosition)
.icon(BitmapDescriptorFactory
.fromBitmap(writeTextOnImage(R.drawable.routemarker,"Your text"),this))));
创建可绘制图像的方法
private Bitmap writeTextOnImage(int drawableId, String text,Context context) {
Bitmap bitmapObj = BitmapFactory.decodeResource(getResources(), drawableId)
.copy(Bitmap.Config.ARGB_8888, true);
Typeface tf = Typeface.create("Helvetica", Typeface.BOLD);
//Create Paint object
//Define style attributes
Paint lPaint = new Paint();
lPaint.setStyle(Paint.Style.FILL);
lPaint.setColor(Color.WHITE);
lPaint.setTypeface(tf);
lPaint.setTextAlign(Paint.Align.CENTER);
lPaint.setTextSize(convertToPixels(context, 11));
Rect textRect = new Rect();
lPaint.getTextBounds(text, 0, text.length(), textRect);
Canvas lCanvas = new Canvas(bm);
if(textRect.width() >= (lCanvas.getWidth() - 4))
{
lPaint.setTextSize(convertToPixels(context, 7));
}
int xPos = (lCanvas.getWidth() / 2) - 2;
int yPos = (int) ((lCanvas.getHeight() / 2)) ;
lCanvas.drawText(text, xPos, yPos, lPaint);
return bitmapObj;
}
以下将是输出
答案 2 :(得分:0)
您必须将代码移到onClick
方法之外,如下所示:
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.getUiSettings().setMapToolbarEnabled(true);
mMap.addMarker(new MarkerOptions().position(new LatLng(latitude,longitude)).icon(BitmapDescriptorFactory.defaultMarker()));
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
return false;
}
});
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.getUiSettings().setAllGesturesEnabled(false);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 16));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 16));
}