我的 android 应用程序中有一个谷歌地图 v2,上面有一些标记。当用户单击这些标记之一时,会出现一个标题弹出窗口。如何在没有用户点击的情况下始终显示这些标题?
6 回答
只要打电话Marker.showInfoWindow();
。请参阅https://developers.google.com/maps/documentation/android/marker#info_windows和https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model /标记#showInfoWindow()
像这样的东西:
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(latitude, longitude))
.title("Your position")).showInfoWindow();
你可以这样做:
Marker marker = mMap.addMarker(new MarkerOptions().position(currentPosition).title("Your text"));
marker.showInfoWindow();
为了在标记周围的地图上显示标记标题,我在互联网上找到的解决方案都不适合我,所以我卷起袖子,制作了这个为我解决这个问题的库,希望它也能帮助其他人:
https://github.com/androidseb/android-google-maps-floating-marker-titles
这是它如何工作的预览:
我在某些实现中不太好,但这是我的代码:
public BitmapDescriptor getBitmapFromView(String title) {
View view = LayoutInflater.from(activity.getApplicationContext()).inflate(R.layout.marker_tooltip, null);
((TextView) view.findViewById(R.id.tooltips_title)).setText(title);
//Get the dimensions of the view. In my case they are in a dimen file
int width = activity.getResources().getDimensionPixelSize(R.dimen.tooltips_width);
int height = activity.getResources().getDimensionPixelSize(R.dimen.tooltips_height);
int measuredWidth = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY);
int measuredHeight = View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY);
view.measure(measuredWidth, measuredHeight);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return BitmapDescriptorFactory.fromBitmap(bitmap);
}
...
marker.setIcon(getBitmapFromView(marker.getTitle()));
...
我在地图应用程序的一个片段中实现了这一点,并有一些变化。例如,使用自定义信息窗口和地图上的一些事件,但它的实现需要同时显示所有标记标题。让我知道它是否对你也有帮助
“activity.getResources().getDimensionPixelSize(R.dimen.tooltips_width)”变量的 ACTIVITY 是片段中的一个属性
也许我回答这个问题有点晚了,但下面的代码对我有用:
//添加这个库
implementation 'com.google.maps.android:android-maps-utils:0.5'
//然后使用下面的方法
public void makersMaker(GoogleMap googleMap){
IconGenerator iconFactory = new IconGenerator(this);
Marker marker1 = googleMap.addMarker(new MarkerOptions().position(newLatLng(-1.3177336,36.8251902));
marker1.setIcon(BitmapDescriptorFactory.fromBitmap(iconFactory.makeIcon("Marker 1")));
Marker marker2 = googleMap.addMarker(new MarkerOptions().position(new LatLng(-1.2857399,36.8214088)));
marker2.setIcon(BitmapDescriptorFactory.fromBitmap(iconFactory.makeIcon("Marker 2")));
}