【问题标题】:Marker icon not showing up but is clickable标记图标未显示但可点击
【发布时间】:2010-08-25 15:10:34
【问题描述】:

我有以下代码,它从数据库中获取信息并将其绘制在地图上。信息在那里并且可点击,但实际图标androidmarker 不可见。为什么?我该如何解决这个问题?

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    tweets = new LocationData(this);

    mapView = (MapView) findViewById(R.id.mapView);
    mapView.setSatellite(true);
    mc = mapView.getController();

    mc.setZoom(17);
    mapView.setBuiltInZoomControls(true);


    // Add the MyPositionOverlay
    positionOverlay = new MyPositionOverlay();
    List<Overlay> overlays = mapView.getOverlays();
    overlays.add(positionOverlay);

    //Add the Mapitems Overlay.

    mapOverlays = mapView.getOverlays();
    Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
    itemizedoverlay = new Mapitems(drawable, this);

    mylocation();
    distance(lat,lng);
    addmark();
    mapView.invalidate();
}

public void addmark(){

    SQLiteDatabase db = tweets.getWritableDatabase();
    String count = "SELECT * FROM tweets;";
    Cursor mcursor = db.rawQuery(count, null);
    startManagingCursor(mcursor);
    mcursor.moveToFirst();  
    if(mcursor != null && mcursor.moveToFirst())
    {
            do
            {
                System.out.println("WHAT");
            String tname = mcursor.getString(4);
            String tmessage = mcursor.getString(7);
            Double tlat = mcursor.getDouble(1);
            System.out.println("lat" + tlat);
            Double tlng = mcursor.getDouble(2);
            System.out.println("lng" + tlng);

            GeoPoint point = new GeoPoint(
                    (int) (tlat*1E6),
                    (int) (tlng*1E6));
            OverlayItem overlayitem = new OverlayItem(point, tname, tmessage);
            itemizedoverlay.addOverlay(overlayitem);
            mapOverlays.add(itemizedoverlay);


            }while(mcursor.moveToNext());

    }
}

【问题讨论】:

  • 是屏幕上的 tlat 和 tlng 像素还是地理点?看起来它们不是地理点,您需要使用地图投影在 (x,y) 和 (lat,lng) 之间进行映射
  • 它们绘制正确。当我点击屏幕上的那个点时,它应该是弹出框出现的地方。它只是没有图标可以明显识别它。

标签: java android google-maps


【解决方案1】:

我假设 Mapitems 是实现 ItemizedOverlay 的类。 问题可能就在那里。您可以按照说明here 了解如何正确创建该类。我自己遵循了本教程,对我来说效果很好。重要的部分是确保在 addOverlay(OverlayItem overlay) 中添加叠加层后调用 populate()

另外,为什么你有mapOverlaysoverlays?他们不一样吗?

【讨论】:

  • 我正在关注该教程。我也让它工作,但现在我在一个循环中做它没有显示图标。我两者都有,只是因为我碰巧用这种方式编写了 2 个不同的叠加层。
  • 弹出框是叠加事件还是您在其他地方添加了不同的标记?因为如果你说它曾经有效,唯一合乎逻辑的事情就是位置不正确
猜你喜欢
  • 2018-08-04
  • 2010-11-06
  • 2019-07-20
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多