我怎么能再添加针谷歌地图?

时间:2012-01-05 17:12:11

标签: android google-maps

我有关于谷歌地图的问题。我想在触摸地图时添加别针。我在做项目时使用过这篇文章。 this is maps link

我的问题是我可以只添加一次针。但我想增加很多时间。我不明白什么是问题。可以帮助我吗?

我的代码在这里:

package com.example;

import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import com.google.android.maps.*;

import java.util.List;

public class HelloGoogleMaps2 extends MapActivity
{
    MapView mapView;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
        mapView.setSatellite(true);
        mapView.isClickable();

      // GeoPoint point = new GeoPoint(50443769,-71158458);
      // GeoPoint point=new GeoPoint(0,0);
       // AddMyPin(point);

        mapView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                 return onTouch2(view,motionEvent);

            }
        });

    }


    public boolean onTouch2(View view, MotionEvent motionEvent) {
        if (motionEvent.getAction() == 0) {
            GeoPoint p = mapView.getProjection().fromPixels(
                    (int) motionEvent.getX(),
                    (int) motionEvent.getY());

           GeoPoint gp= new GeoPoint((int)motionEvent.getX(),(int)motionEvent.getY());

            AddMyPin(p);

        }

       return  false;

    }

    @Override
    protected boolean isRouteDisplayed()
    {
        return false;
    }

    public void AddMyPin(GeoPoint point)
    {
        List<Overlay> mapOverlays = mapView.getOverlays();

        Drawable drawable = this.getResources().getDrawable(R.drawable.bubble);
        HelloItemizedOverlays itemizedoverlay = new HelloItemizedOverlays(drawable,this);

        OverlayItem overlayitem = new OverlayItem(point,null,null);


        itemizedoverlay.addOverlay(overlayitem);

        mapOverlays.add(itemizedoverlay);


    }

} 

2 个答案:

答案 0 :(得分:1)

尝试将您的方法更改为:

public void AddMyPin(GeoPoint point)
{    
        Drawable drawable = this.getResources().getDrawable(R.drawable.bubble);
        HelloItemizedOverlays itemizedoverlay = new HelloItemizedOverlays(drawable,this);

        OverlayItem overlayitem = new OverlayItem(point,null,null);


        itemizedoverlay.addOverlay(overlayitem);

        mapView.getOverlays().add(itemizedoverlay);

        //this will cause the map to redraw with the new overlay 
        mapView.invalidate();
}

答案 1 :(得分:0)

问题可能来自你的HelloItemizedOverlays类。 我认为你创建后不会再次填充它。这就是为什么你在第一次获得一个引脚然后没有别的东西。

因为populate是一个你不能在itemizedoverlay类之外调用的最终方法。 您可以在HelloItemizedOverlays类中创建一个公共方法,该方法可以在您的请求中调用populate。

HelloItemizedOverlays类中的类似内容。

public void populateList() {
    populate();
}

在你的AddMyPin方法中。

 public void AddMyPin(GeoPoint point)
{
    List<Overlay> mapOverlays = mapView.getOverlays();

    Drawable drawable = this.getResources().getDrawable(R.drawable.bubble);
    HelloItemizedOverlays itemizedoverlay = new HelloItemizedOverlays(drawable,this);

    OverlayItem overlayitem = new OverlayItem(point,null,null);


    itemizedoverlay.addOverlay(overlayitem);
    itemizedoverlay.populateList();

    mapOverlays.add(itemizedoverlay);
    mapView.invalidate();


}