2010-03-01 3 views
2

Я выполнил инструкции из учебника google hellomapview. Я получаю рабочий вид карты и т. Д. Но два элемента, которые добавлены к карте, не отображаются. Кажется, они там где-то, потому что нажатие в указанном месте показывает сообщение, которое было добавлено к элементам.Почему мои накладки на карте не отображаются?

Редактировать

Вот мой исходный код. Он должен быть очень близок к исходному коду Google.

public class MapOverlay extends ItemizedOverlay<OverlayItem> { 

private List<OverlayItem> overlays = new ArrayList<OverlayItem>(); 
private Context context; 

public MapOverlay(Drawable defaultMarker, Context context) { 
    super(defaultMarker); 
    overlays = new ArrayList<OverlayItem>(); 
    this.context = context; 
} 

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

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

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

@Override 
protected boolean onTap(int index) { 
    OverlayItem item = overlays.get(index); 
    AlertDialog.Builder dialog = new AlertDialog.Builder(this.context); 
    dialog.setTitle(item.getTitle()); 
    dialog.setMessage(item.getSnippet()); 
    dialog.show(); 
    return true; 
} 

} 

public class MapsActivity extends MapActivity { 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    MapView mapView = (MapView) findViewById(R.id.mapview); 
    mapView.setBuiltInZoomControls(true); 

    MapOverlay overlay = new MapOverlay(this.getResources().getDrawable(
      R.drawable.androidmarker), this); 

    overlay.addOverlay(new OverlayItem(new GeoPoint(19240000,-99120000), "Blubb", "See?")); 
    mapView.getOverlays().add(overlay); 
} 

@Override 
protected boolean isRouteDisplayed() { 
    return false; 
} 
} 

Является ли исходный код из учебника Google доступным где-то?

ответ

8

Проблема в том, что я забыл установить границы допустимого. Кажется, что если mapview не знает, как выровнять изображение, он вообще не покажет его.

Я изменил первую строку в моем конструкторе от:

super(defaultMarker); 

в

super(boundCenterBottom(defaultMarker)); 

и знаю его работать идеально.

+0

+1 Я сделал ту тупую ошибку. Я закончил экспортировать две связанные функции, чтобы они были доступны при создании нового 'OverlayItem', который использует свой собственный (не умолчанию) маркер. –

1

В то же время я не знаю, как вам помочь.

Herelinks в различные издания проекта, которые определенно работают с накладками, возможно, они помогут.

+0

Хорошо, проект NooYak работает для меня. Я посмотрю разницу между вашим и моим проектом. – Janusz

Смежные вопросы