Несколько маркеров с использованием Android и Google Map - PullRequest
0 голосов
/ 27 сентября 2011

В моем приложении я хочу добавить более двух маркеров на карту Google.Просто я могу добавить один маркер, но я не знаю, как я могу добавить несколько маркеров.Пожалуйста, скажите мне, как я могу это сделать.

Ответы [ 3 ]

2 голосов
/ 27 сентября 2011

Речь идет о том, чтобы ваша ItemizedOverlay обрабатывала более одного маркера в ваших size() и createItem() методах.Метод size() должен возвращать желаемое количество маркеров, а createItem() должен возвращать каждый OverlayItem на основе индекса.

Вот пример проекта , демонстрирующий карту с четырьмямаркеры.

0 голосов
/ 21 июня 2012

Вы можете использовать ItemizedOverlay для добавления нескольких макетов. здесь приведен пример кода ItemizedOverlay `public class YourItemizedOverlay extends ItemizedOverlay {

private ArrayList<OverlayItem> myOverlays ;

public YourItemizedOverlay(Drawable defaultMarker) {
    super(boundCenterBottom(defaultMarker));
    yourOverlays = new ArrayList<OverlayItem>();
    populate();
}

public void addOverlay(OverlayItem overlay){
    yourOverlays.add(overlay);
    populate();
}

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

// Removes overlay item i
public void removeItem(int i){
    yourOverlays.remove(i);
    populate();
}

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


public void addOverlayItem(OverlayItem overlayItem) {
    yourOverlays.add(overlayItem);
    populate();
}


public void addOverlayItem(int lat, int lon, String title) {
    try {
        GeoPoint point = new GeoPoint(lat, lon);
        OverlayItem overlayItem = new OverlayItem(point, title, null);
        addOverlayItem(overlayItem);    
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
}

@Override
protected boolean onTap(int index) {
    // TODO Auto-generated method stub
    String title = yourOverlays.get(index).getTitle();//display message when you touch your marker
    Toast.makeText(YourMapActivity.context, title, Toast.LENGTH_LONG).show();
    return super.onTap(index);
}

} `

0 голосов
/ 28 сентября 2011

Если вы используете небольшое количество маркеров, вы также можете использовать один и тот же класс наложения несколько раз.Базовое наложение карты намного проще в использовании, но после определенного момента оно становится очень неэффективным.Я использовал два экземпляра класса для текущего местоположения и помеченного местоположения следующим образом:

    overlayList = mapView.getOverlays();
    overlayList.clear();
    locationOverlay = new MapOverlay();
    pushpinOverlay = new MapOverlay();

Установите здесь идентификатор маркера для png, смещения x и смещения y.(Функции, закодированные в классе MapOverlay.)

    overlayList.add(locationOverlay);
    overlayList.add(pushpinOverlay);

В конечном итоге аннулировать карту, чтобы вызвать перерисовку.

Для двух маркеров это работало очень хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...