如何在谷歌地图中实现项目的位置?

时间:2010-11-18 15:08:57

标签: android google-maps android-mapview

我有一个googlemap应用程序,显示两个项目(itemizedoverlay类),我有一个更新按钮。当我按下更新按钮时,我想从地图中删除这些项目,然后再次添加相同的项目,但是使用新的纬度和经度值(我有一个服务,可以实现我在sharedPreferences中的纬度和经度字段,以及我也用捆绑的方式重新考虑另一个职位。

我做错了什么?当我尝试我的代码时,地图的项目不会被删除....只是新项目出现...但我想删除旧的

updateButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                mapOverlays.clear();
                updateMyPosition();
                updateFriendPosition();
            }
        });

这些是我的两个功能:

private void updateFriendPosition() 
    {
        Bundle bundle = this.getIntent().getExtras();//get the intent & bundle passed by X
        userText.setText(bundle.getString("user"));
        permissionText.setText(bundle.getString("permission"));
        lastUpdateText.setText(bundle.getString("lastupdate"));
        String coordinates[] = {bundle.getString("lat"), bundle.getString("lon")};  
        lat = Double.parseDouble(coordinates[0]);
        lng = Double.parseDouble(coordinates[1]);
        p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
        OverlayItem overlayitem1 = new OverlayItem(p, bundle.getString("user"), "Hi Friend!");
        itemizedoverlay.addOverlay(overlayitem1);
        mapOverlays.add(itemizedoverlay);// dibujo la estrella con la posicion actual del friend

        mc.animateTo(p); ///nos centra el mapa en la posicion donde esta nuestro amigo
        mc.setZoom(10);  /// ajusta el zoom a 10        
    }

private void updateMyPosition()
    {
        String coordinates[] = {settings.getString("mylatitude", null),settings.getString("mylongitude", null)};    
        lat = Double.parseDouble(coordinates[0]);
        lng = Double.parseDouble(coordinates[1]);
        p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
        OverlayItem overlayitem1 = new OverlayItem(p, "Me", "My Position");
        itemizedoverlay2.addOverlay(overlayitem1);
        mapOverlays.add(itemizedoverlay2);//dibujo mi icono para mostrarme a mi
    }

我也尝试使用mapview上的invalidate(),但它不起作用......仍然画旧项......

1 个答案:

答案 0 :(得分:1)

看起来这是基于SDK教程。你已经为itemizedoverlay和另一个添加了两件事。您需要在HelloItemizedOverlay中添加一个方法,即'clear'

public void clear() {
    mOverlays.clear();
}

在致电

之前调用此方法
itemizedoverlay.addOverlay(overlayitem1);