Google android maps api v2 始终显示标记标题

Posted

技术标签:

【中文标题】Google android maps api v2 始终显示标记标题【英文标题】:Google android maps api v2 Show Marker Title Always 【发布时间】:2013-01-12 19:38:00 【问题描述】:

我的 android 应用程序中有一个 google maps v2,上面有一些标记。当用户单击这些标记之一时,会出现一个标题弹出窗口。如何在没有用户点击的情况下始终显示这些标题?

【问题讨论】:

【参考方案1】:

只需致电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/Marker#showInfoWindow()

【讨论】:

谢谢它帮助了我一点。但我想同时显示所有标题。有可能吗?【参考方案2】:

类似的东西:

googleMap.addMarker(new MarkerOptions()
    .position(new LatLng(latitude, longitude))
    .title("Your position")).showInfoWindow();

【讨论】:

它在使用默认信息窗口时完全工作,但是当我使用信息窗口适配器作为自定义信息窗口而不是信息窗口默认打开时??【参考方案3】:

你可以这样做:

Marker marker = mMap.addMarker(new MarkerOptions().position(currentPosition).title("Your text"));
marker.showInfoWindow();

【讨论】:

【参考方案4】:

为了在标记周围的地图上显示标记标题,我在互联网上找到的解决方案都不适合我,所以我卷起袖子制作了这个库来为我解决这个问题,希望它也能帮助其他人:

https://github.com/androidseb/android-google-maps-floating-marker-titles

这里是它如何工作的预览:

【讨论】:

我不知道为什么它被否决了。这是一个非常有用的答案。也谢谢你的 gif。【参考方案5】:

我在某些实现方面不太好,但这是我的代码:

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 是片段中的一个属性

【讨论】:

谢谢你!此外,要测量文本的宽度,您可以使用 textView.paint.measureText(title) 使位图宽度取决于内容【参考方案6】:

也许我回答这个问题有点晚了,但下面的代码对我有用:

//添加这个库

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")));

【讨论】:

以上是关于Google android maps api v2 始终显示标记标题的主要内容,如果未能解决你的问题,请参考以下文章

Maps SDK for Android v.3.0.0 BETA "是否可以在没有Google Play服务的设备上运行?

Google Maps API v.3.31更新会破坏StageWebView和StageWebViewBridge

打开eclipse后应该怎样安装 Google map API ?在Android sDK Manager列表中没有找到Google map API 这应该

如何在现有的旧版Android项目中使用最新的API添加Google Map?

Google Geolocation API 和 Google Maps Android SDK

无法运行 Google Maps Android API Utility Demo