2010-09-21 2 views
0

Я разрабатываю приложение для сопоставления Android, и мне удалось обработать учебник ItemizedOverlay Google в моем коде. Я рисую свой маленький круг на карте красиво.Android Mapping Overlay Question

Однако, я хотел бы пометить свой крошечный символ своим названием - все время. Я собираюсь отбросить несколько разных символов на моей карте, и возможность отображать их ярлыки будет БОЛЬШОЙ справкой. Я получил метод onTap, но когда вы нажимаете экран, он берет на себя весь экран, что не очень полезно.

Мне не удалось найти что-то об этом в Интернете, поэтому я не оптимист, но если у кого-то есть какое-то предложение, это было бы очень оценено.

ответ

1

Не знаете, что такое onTap связано с этим или с тем, что вы подразумеваете под словом «он берет на себя весь экран», но я думаю, что для отображения этикеток вам придется рисовать их самостоятельно. Вы можете сделать это несколькими способами. Можно было бы непосредственно переопределить метод ItemizedOverlay.draw и выполнить итерацию каждого из ваших GeoPoints и нарисовать заголовок непосредственно на Canvas на небольшом смещении к этому местоположению. Другим возможным способом было бы вернуть пользовательский маркер; вместо того, чтобы просто возвращать символ, вы можете создать Picture, нарисуя круг, а затем нарисовав рядом с ним текст, а затем вы сможете обернуть его в PictureDrawable и использовать его в качестве маркера для вашего элемента оверлея.

+0

OnTap: Когда я нажимаю на преобразованного символа, отображается название, но в манере, которая затемняет карту (по существу). Кроме этого, я не думаю, что это не так, я уверен, что данные находятся в приложении. Я возьму stab – Rich

+0

. К сожалению, я ударил по возвращении, прежде чем я закончил ... Продолжая: я посмотрю, что Я могу сделать с ItemizedOverlay.draw, спасибо за подсказку. – Rich

+0

Теперь пришло время научить меня ;-) - как вы показываете заголовок в 'onTap'? Я тоже это делаю, но мне пришлось выполнять всю эту дополнительную работу, когда я создал «TextView», и я изменяю «LayoutParams» на представлении, чтобы он был центрирован над любым маркером, который пользователь нажимает. Вы нашли способ, чтобы оверлей автоматически сделал это за вас? –

0

метод My OnTap выглядит следующим образом:

 
protected boolean onTap (int index) 
{ 
    OverlayItem item = mOverlays.get (index); 
    AlertDialog.Builder dialog = new AlertDialog.Builder (mContext); 

    dialog.setTitle (item.getTitle()); 
    dialog.setMessage (item.getSnippet()); 
    dialog.show(); 
    return true; 
} 

Вызывающее приложение проходит в контексте (это), когда она создает экземпляр детализированного Overlay. Я все еще не совсем уверен, что это значит, но я сохраняю переданный контекст в mContext и использую его в onTap(). Естественно, я не могу поверить в это, так как кто-то еще отправился в Интернет. Он отображает информацию Overlay на экране, но (к сожалению, для меня) не таким образом, которым я доволен.

Я работаю над переопределением метода draw, но это было сильно прервано и все еще находится на ранней стадии. Я отправлю его здесь, если у вас есть интерес.

Р.

+0

Обновление для Neil: метод draw отменен, и, похоже, он работает хорошо. Мое приложение красиво рисует маленькие надписи рядом с моими маленькими символами, и я очень доволен этим. Дайте мне знать, если вы заинтересованы в коде. – Rich

+0

А теперь я понимаю, что вы не использовали диалог. Рад услышать, как вы поняли, что работает лучше! –