2012-01-05 15 views
0

我有关于谷歌地图的问题。我想添加pin当我触摸地图。我用这个职位,当我做项目。 this is maps link我该如何添加pin google地图一次?

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

我的代码是在这里:

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); 


    } 

} 
+0

@Marvin我添加了pin只有一次。如果我想再添加一次它不起作用。 – DuyguK 2012-01-06 08:35:22

回答

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(); 
} 
+0

它does not work.Still我可以添加一个pin.Do你有任何想法? – DuyguK 2012-01-06 08:06:34

0

的问题可能是从你的HelloItemizedOverlays类。 我认为你一旦创建就没有再次填充它。这就是为什么你只是得到一个针,然后第一次没有别的。

由于填充是您不能在itemedoverlay类外部调用的最终方法。 您可以在您的HelloItemizedOverlays类中创建一个公用方法,该方法可以调用您的请求。

类似于你的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(); 


} 
+0

它does not work.Still我可以添加1针。 – DuyguK 2012-01-06 11:00:13

相关问题