2010-09-21 194 views
0

我正在开发一个Android映射应用程序,并且已经成功将Google的ItemizedOverlay教程应用到我的代码中。我在地图上很好地绘制了我的小圈子。Android映射覆盖问题

但是,我想标记我的小标志和它的标题 - 所有的时间。我将在地图上放置几个不同的符号,并且能够显示他们的标签将是一个很大的帮助。我使用了onTap方法,但是当您点击屏幕时,它会占用整个显示屏 - 这不是很有帮助。

我还没有设法在互联网上找到这件事,所以我不乐观,但如果任何人有任何建议,那将非常感激。

回答

1

不知道什么onTap与此或你的意思是“它接管整个显示器”,但我想显示标签,你将不得不自己画。你可以用几种方法做到这一点。一种方法是直接覆盖ItemizedOverlay.draw方法,并遍历每个GeoPoints并直接将标题直接绘制到Canvas上,并在该位置的某个小偏移处。另一种可能的方法是返回一个自定义标记;您可以创建一个Picture,而不是仅仅返回该符号,您可以通过绘制圆圈然后在其旁边绘制一些文本来创建Picture,然后您可以将其包装在PictureDrawable中,并将其用作覆盖项目的标记。

+0

的onTap:当我对映射后的码元点按,则显示标题,但在遮盖了地图(基本上)的方式。除此之外,我认为这并没有太大的作用,除此之外,我确信这些数据都在应用程序中。我会采取一个措施 – Rich 2010-09-21 20:45:01

+0

糟糕,我在完成之前打回来......继续:我会看到什么我可以使用ItemizedOverlay.draw,谢谢你的提示。 – Rich 2010-09-21 20:49:28

+0

现在是您教我的时候了;-) - 您如何在“onTap”中显示标题?我也是这样做的,但是我必须在创建'TextView'的同时完成所有这些额外的工作,并且在视图上更改'LayoutParams',以使其集中在用户点击的任何标记上。你有没有找到一种方法让覆盖层自动为你做? – 2010-09-21 21:51:34

0

我的方法的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; 
} 

调用应用程序通过在其上下文(本),当它实例化逐项叠加。我仍然不确定这意味着什么,但是我保存mContext中的传入上下文,并在onTap()中使用它。当然,自从其他人登录到互联网后,我无法真正承认它。它确实在屏幕上显示了Overlay的信息,但是(不幸的是,对我来说)并不是我满意的方式。

我正在努力重写draw方法,但这已经被打断了很多,并且还处于早期阶段。如果有任何兴趣,我会在这里发布。

R.

+0

尼尔更新:绘制方法被覆盖,它似乎运行良好。我的应用很好地在我的小符号旁绘制了小标签,我对此很满意。让我知道你是否对代码感兴趣。 – Rich 2010-09-27 17:30:33

+0

啊,我现在明白了,我没有意识到你正在使用对话框。很高兴听到你想出了一些更好的东西! – 2010-10-15 14:17:27