Как удалить фон маркера при реализации подкласса ItemizedOverlay?

#android #google-maps #itemizedoverlay

#Android #google-карты #itemizedoverlay

Вопрос:

Я работаю с Google-maps, я добавил несколько точек на карту. Я использую это изображение в качестве маркера:введите описание изображения здесь

Ниже приведено то, что у меня есть сейчас:

Как это выглядит сейчас

Вы можете заметить, что у этой картинки белый фон, и она не выглядит нормально на карте. Есть ли способ удалить белый фон (и тень этого леденца)? Я считаю, что это выглядело бы намного лучше, чем.

Возможно, это было бы полезно, я публикую исходный код моего подкласса ниже:

     class PointsInMoskow extends ItemizedOverlay{
    private List<List<Address>> convertedAddresses=new ArrayList<List<Address>>();
    private List<OverlayItem> points=new ArrayList<OverlayItem>();
    private Drawable marker;

    public PointsInMoskow(Drawable marker){
        super(marker);
        this.marker=marker;

        try {
            convertedAddresses.add(geocoder.getFromLocationName("Москва, м.Фили", 2));
            convertedAddresses.add(geocoder.getFromLocationName("Москва, м.Площадь Революции", 2));
            convertedAddresses.add(geocoder.getFromLocationName("Москва, м. Калужская", 2));
            int latitude;
            int longitude;
            for (int i=0;i<3;i  ) {
                List<Address> addressList=(List<Address>)convertedAddresses.get(i);
                if(addressList!=null amp;amp; addressList.size()>0){
                    latitude=(int)(addressList.get(0).getLatitude()*1000000);
                    longitude=(int)(addressList.get(0).getLongitude()*1000000);
                    points.add(new OverlayItem(new GeoPoint(latitude, longitude), "title", "snippet"));
                }
            }
            populate();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    @Override
    protected OverlayItem createItem(int i) {
        return points.get(i);
    }

    @Override
    public int size() {
        return points.size();
    }
}
  

Ответ №1:

Используемое вами изображение использует непрозрачные цвета. Для того, чтобы карта отображалась через нужные вам части, вам придется использовать прозрачность в исходном изображении.

На самом деле это не вопрос программирования, но есть много руководств о том, как это сделать

http://fabiovisentin.com/tutorial/gimp_transparent_image/gimp_how_to_make_transparent_image.asp

Другим вариантом было бы манипулировать изображением в Java, но может быть сложно получить желаемый эффект. Вы могли бы загрузить изображение в BitmapDrawable, затем обработать его и установить в качестве маркера.