it-swarm.com.ru

Google Android maps api v2 Показать заголовок маркера Всегда

У меня есть Google Maps v2 в моем приложении для Android и некоторые маркеры на нем. Когда пользователь нажимает на один из этих маркеров, появляется всплывающее окно с заголовком. Как я могу показать эти заголовки всегда без клика?

34
Sercan Ozdemir
41
Anthony

Что-то вроде того:

googleMap.addMarker(new MarkerOptions()
    .position(new LatLng(latitude, longitude))
    .title("Your position")).showInfoWindow();
41
José De la O

Вы можете сделать это:

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

Для отображения названий маркеров на карте вокруг маркеров ни одно из решений, которые я нашел в Интернете, не сработало для меня, поэтому я закатал рукава и создал эту библиотеку, которая решает эту проблему для меня, надеюсь, она поможет и другим:

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

Вот предварительный просмотр того, как это работает:

 preview

4
androidseb

Я не очень хорош в некоторой реализации, но вот мой код:

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 переменной "activity.getResources (). getDimensionPixelSize (R.dimen.tooltips_width)" является свойством во фрагменте

1
Carlos Espinoza

Может быть, я немного опоздал с ответом на этот вопрос, но код ниже работает для меня:

// добавить эту библиотеку

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")));
}
0
Ben