2013-02-21 1 views
0

ok라는 질문에 mapview 및 OnTouchListener가 설정되어 있고 Ontouch 함수에서지도에 오버레이 이미지가 설정되어 있습니다. . 그러나이 과정에서 이제 mapview의 줌 컨트롤과 드래그 기능이 제거됩니다. 제발 도와주세요. 이미 true로 설정되어 있습니다 (효과 없음). 도와주세요.Google지도의 OnTouch는지도 뷰에서 드래그 및 스크롤을 제거하고 확대/축소 컨트롤을 사용하지 않습니다.

public class marker extends ItemizedOverlay { 

    Context mContext; 

    OverlayItem overlayitem; 

    Drawable marker; 

    private int xDragImageOffset=0; 

    private int yDragImageOffset=0; 

    private int xDragTouchOffset=0; 

    private int yDragTouchOffset=0; 

    OverlayItem inDrag; 

    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); 

    public marker(Drawable defaultMarker, Context context) { 

      super(boundCenterBottom(defaultMarker)); 

      mContext = context; 

      marker=defaultMarker; 
     } 

    public void addOverlay(OverlayItem overlay) { 

     mOverlays.clear(); 

     mOverlays.add(overlay); 

     populate(); 
    } 

    @Override 

    protected OverlayItem createItem(int i) { 

     return mOverlays.get(i); 
    } 



     @Override 

    public int size() { 

    return mOverlays.size(); 
    } 

     @Override 

    public boolean onTap(GeoPoint geoPoint, MapView mapView){ 

    boolean tappedAnOverlay = super.onTap(geoPoint, mapView); 

     if (tappedAnOverlay) { 

      places.gp=geoPoint; // do your thing if hit an overlay 

     } 

     else { 
      // no overlay found in that location 
     } 


     MapController mc=mapView.getController(); 

     mc.animateTo(geoPoint); 

      return true; 
    } 



} 
this is my marker overlays file 

public class places extends MapActivity implements android.view.View.OnClickListener/*,OnTouchListener*/ { 

     MapView mapView; 

     MapController mc; 

     Button srchbtn; 

     EditText searchstring; 

     marker itemizedoverlay; 

    public static List<Overlay> mapOverlays; 

     OverlayItem overlayitem; 

     public static GeoPoint gp; 

     Button back; 

     String s1; 

     String s2="yourprofile"; 

     String s3="partnerprofile"; 

     public int zoom=5; 

     @Override 

     public void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 

      setContentView(R.layout.place); 

      mapView = (MapView) findViewById(R.id.mapview); 

      mapView.setBuiltInZoomControls(true); 

      srchbtn=(Button)findViewById(R.id.searchbtn); 

      searchstring=(EditText)findViewById(R.id.edplnm); 

      srchbtn.setOnClickListener(this); 

      mapView.setClickable(true); 

      mapView.setBuiltInZoomControls(true); 

      mapOverlays = mapView.getOverlays(); 

      Drawable drawable = this.getResources().getDrawable(R.drawable.marker); 

      itemizedoverlay = new marker(drawable, this); 

      back=(Button)findViewById(R.id.btnbk); 

      back.setOnClickListener(this); 

      s1=getIntent().getStringExtra("ClassName"); 

      mc=mapView.getController(); 

      mc.setZoom(zoom); 

      gp=new GeoPoint((int)(21.7679 * 1E6), (int)(78.8718 * 1E6)); 

      mc.animateTo(gp); 

        // mapView.setOnTouchListener(this); 


     } 

    @Override 

     protected boolean isRouteDisplayed() { 

      return false; 
     } 

     @Override 

     public void onClick(View arg0) { 

      // TODO Auto-generated method stub 

      switch(arg0.getId()) 

      { 

      case R.id.searchbtn:String s = searchstring.getText().toString(); 

           String[] vals =s.split(":"); 

           float lat; 

           float logi; 

           lat=Float.parseFloat(vals[0]); 

           logi=Float.parseFloat(vals[1]); 

           gp = new GeoPoint((int)(lat * 1E6), (int)(logi * 1E6)); 

           MapController mc=mapView.getController(); 

           mc.setZoom(80); 

           mc.animateTo(gp); 

           overlayitem = new OverlayItem(gp, "", ""); 

           itemizedoverlay.addOverlay(overlayitem); 

           mapOverlays.add(itemizedoverlay); 

           break; 

      case R.id.btnbk: int Lat; 

          int Logi; 

          Lat=gp.getLatitudeE6(); 

          Logi=gp.getLongitudeE6(); 

          boolean val=s1.equals(s2); 

          boolean val2=s1.equals(s3); 

          Intent I1=new Intent(places.this,yourprofile.class); 

          Intent I2=new Intent(places.this,partnerprofile.class); 

          if(val) 

          { 

          I1.putExtra("LAT",Lat); 

          I1.putExtra("LONG",Logi); 

          setResult(RESULT_OK,I1); 

          finish(); 


          }else 

           if(val2) 

           { 

            I2.putExtra("LAT",Lat); 

            I2.putExtra("LONG",Logi); 

            setResult(RESULT_OK,I2); 

            finish(); 
           } 

          break; 


      } 

    } 

    /*public boolean onTouch(View v, MotionEvent e) { 

      if(e.getAction()==MotionEvent.ACTION_UP){ 

      Projection p =((MapView)v).getProjection(); 

      gp = p.fromPixels((int) e.getX(), (int) e.getY()); 

      overlayitem = new OverlayItem(gp, "", ""); 

      itemizedoverlay.addOverlay(overlayitem); 

      mapOverlays.add(itemizedoverlay); 

      mc.setZoom(zoom); 

      mc.animateTo(gp); 

      searchstring.setText(((float)gp.getLatitudeE6())/1000000 + ":" + 

    ((float)gp.getLongitudeE6())/1000000); 

      } 

      return true; 
     }*/ 



    } 

이 내 장소 클래스 파일 여기

답변

0

사용할 수 있습니다 Sample Working Demo입니다.

드래그하는 데 도움이됩니다. &지도 뷰의 확대/축소 기능과 터치 기능을 사용하여 이미지를 드롭합니다.

희망 하시겠습니까?

+0

나를 위해 작동하지 않습니다. 지금 온라인으로 내 코드를 업로드하고 있습니다. –