2010-03-15 5 views
3

Я создаю MapView, и я хочу, чтобы мои пользовательские элементы наложения отображали имя местоположения, которое они маркируют, когда пользователь нажимает на них, например приложение Android Maps.Android: метки наложения карт

Я устанавливаю прослушиватель onTap и плавающий TextView для хранения имени местоположения. Мне все равно нужно настроить его таким образом, чтобы он перерисовывал метку, когда пользователь перемещает карту и т. Д.

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

Для справки, моя реализация до сих пор:

в XML Карта:

<LinearLayout android:id="@+id/mapBubbleWrap" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true"> 
    <TextView android:id="@+id/mapBubble" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="gone" 
     android:background="#ffffff" 
     android:textColor="#ff0000"/> 
</LinearLayout> 

в моей расширенной ItemizedOverlay:

public boolean onTap(int index) { 

    this.setFocus(mOverlays.get(index));  
    return true; 
} 

в моей деятельности OnFocus:

public void onFocusChanged(ItemizedOverlay overlay, OverlayItem item) { 
    if(item != null) { 
     mapBubble.setText(item.getTitle()); 
     Point newPoint = mapView.getProjection().toPixels(item.getPoint(), null); 
     mapBubbleWrap.setPadding(newPoint.x, newPoint.y-10, 0, 0); 
     mapBubble.setVisibility(View.VISIBLE); 
    } 
} 

ответ

3

Я думаю, что большинство реализаций MapView имеют этикетки.

Возможно, но в дополнение к Google Map нет ничего, чтобы поддерживать их, помимо того, что вы делаете. Хотя я не полностью понимаю, о чем идет речь. Если я хочу всплывающую панель, когда пользователь нажимает, я просто показываю всплывающее окно, когда пользователь кранит - см. Пример this project.

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