不了解 com.google.android.maps.Overlay 的 drawAt() 方法

Posted

技术标签:

【中文标题】不了解 com.google.android.maps.Overlay 的 drawAt() 方法【英文标题】:Not understanding drawAt() method for com.google.android.maps.Overlay 【发布时间】:2011-01-06 22:25:38 【问题描述】:

试图在一个安卓程序中制作一个谷歌地图覆盖。在叠加层的绘制方法中,我有两种添加图钉的方法。其中一个有效,一个无效。可惜,不工作的也是唯一一个有加影能力的!有什么帮助吗?

@Override
public void draw(android.graphics.Canvas canvas, MapView mapView,
        boolean shadow) 

    Point po = mapView.getProjection().toPixels(mapView.getMapCenter(),
            null);

    // This does _not_ work, but I would really like it to!
    drawAt(canvas, mapView.getResources().getDrawable(R.drawable.map_marker_v),
           po.x, po.y, false);

    // This does work, but only does half the job
    canvas.drawBitmap(BitmapFactory.decodeResource(mapView.getResources(),
            R.drawable.map_marker_v), po.x, po.y, null);



编辑:固定类型

【问题讨论】:

您能准确解释一下“不起作用”的含义吗?您是否在 logcat 窗口中收到任何错误消息?你的应用程序崩溃了吗?是不是画不出来之类的? 安东尼,当然!它根本不画。 logcat 中没有任何类型的错误消息,但应用程序不会崩溃 【参考方案1】:

我认为您的问题可能只是因为您没有在drawAt() 中设置可绘制对象的边界。您可以使用Drawable.setBounds() 手动设置边界,也可以使用ItemizedOverlay 的便捷方法boundCenter()boundCenterBottom()

我相信第二种方法有效的原因是因为使用解码的位图,您不必指定 Drawable 的边界。

【讨论】:

【参考方案2】:

乍一看,我没有发现什么可能导致您的图钉无法绘制。但是,我可能已经找到了一个临时的解决方案。

在 google 上查看将我带到 this post,用户在其中发布了他们的 Overlay 版本,能够添加图标和阴影。这可能是您正在寻找的。​​p>

希望这会有所帮助。

【讨论】:

谢谢!其实我也想过这样做哈哈

以上是关于不了解 com.google.android.maps.Overlay 的 drawAt() 方法的主要内容,如果未能解决你的问题,请参考以下文章

了解 SSTable 不变性

不了解 IntentFilter

不了解 JWT “加密”

不了解DDD前:什么鬼?了解DDD后:真香!

七个你可能不了解的CSS单位

原创 | 不了解这12个语法糖,别说你会Java!