2012-07-19 83 views
1

即使地圖視圖移動,onTap偵聽器如何在android地圖視圖中工作。 實際上我正在根據用戶的方向旋轉地圖視圖。onTap如何在android中工作mapview

我從sesor經理越來越方位角。

如果角度爲0和Ontap工作正常上Pin.If角度改變說20中的onTap不上針正好工作它的工作原理後,一些空間針旁邊。

我採取旋轉視圖,我採取的MapView。現在我改變軸承旋轉後rotateview內。

RotateView設置軸承代碼

@Override 
    protected void dispatchDraw(Canvas canvas) { 

     canvas.save(Canvas.MATRIX_SAVE_FLAG); 

    //if mHeading is zero its work otherwise onTap position is changing 
     canvas.rotate(mHeading, getWidth()/2, getHeight()); 

     mCanvas.delegate = canvas; 
     super.dispatchDraw(mCanvas); 
     canvas.restore(); 
    } 

疊加類

public class SonarOverlay1 extends ItemizedOverlay<OverlayItem> 
{ 
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); 
    private Context mContext; 
public SonarOverlay1(Drawable defaultMarker,Context context) { 
    super(boundCenter(defaultMarker)); 
    this.mContext=context; 

    populate(); 
} 

@Override 
protected OverlayItem createItem(int arg0) { 

    return mOverlays.get(arg0); 
} 
public void addOverlay(OverlayItem item) { 
    mOverlays.add(item); 
    populate(); 

} 

@Override 
public int size() { 
//Log.e("overlay size..",""+mOverlays.size()); 
    return mOverlays.size(); 
} 


@Override 
protected boolean onTap(int index) { 
    // TODO Auto-generated method stub 

     OverlayItem item = mOverlays.get(index); 
     AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); 
     dialog.setTitle(item.getTitle()); 
     dialog.setMessage(item.getSnippet()); 
     dialog.show(); 
     return true; 
} 
} 
+0

你會解釋更詳細? – SALMAN 2012-07-19 12:28:20

+0

我編輯了我的問題,請幫助我 – koti 2012-07-19 12:35:37

+0

什麼是PIN碼是您在MapView上製作的一個標記? – SALMAN 2012-07-19 12:37:24

回答

1

看一看MapsDemo例子

ANDROID_SDK \插件\插件-google_apis-google_inc_-7 \樣品\ MapsDemo。

它有旋轉地圖演示。

旋轉MapView的最簡單方法

謝謝。

+0

如需進一步解釋,您可以發表評論,如果它可以幫助你忘記接受我的答案,並投票給我:)謝謝。 – SALMAN 2012-07-19 12:42:26

+0

我所用,如果方位角爲0它的工作,如果軸承改變其不銷 – koti 2012-07-19 12:43:15

+0

準確工作,就可以請張貼您的代碼段在這裏,這樣我可以找出你的問題,因爲我已經使用了幾次,上述教程並沒有讓我失望。由於 – SALMAN 2012-07-19 12:45:29

1

這裏邊旋轉地圖,我們要爲地圖也隨之旋轉觸摸evnts使用onDispatchTouch方法

看到下面的代碼

@Override 
    public boolean dispatchTouchEvent(MotionEvent event) { 
     float[] coords = new float[] { 
       event.getX(), event.getY() 
     }; 
     adjustCoords(coords, getRotation()); 
     MotionEvent evt = MotionEvent.obtain(event.getDownTime(), event.getEventTime(), event 
       .getAction(), coords[0], coords[1], event.getPressure(), event.getSize(), event 
       .getMetaState(), event.getXPrecision(), event.getYPrecision(), event.getDeviceId(), 
       event.getEdgeFlags()); 
     return super.dispatchTouchEvent(evt); 
    } 
    protected void adjustCoords(float[] coords, float deg) { 
     float x = coords[0]; 
     float y = coords[1]; 
     int centerX = getWidth()/2; 
     int centerY = getHeight()/2; 
     // convert to radians 
     float rad = (float) ((deg * Math.PI)/180F); 
     float s = (float) Math.sin(rad); 
     float c = (float) Math.cos(rad); 
     // translate point back to origin: 
     x -= centerX; 
     y -= centerY; 
     // apply rotation 
     float tmpX = x * c - y * s; 
     float tmpY = x * s + y * c; 
     x = tmpX; 
     y = tmpY; 
     // translate point back: 
     x += centerX; 
     y += centerY; 
     coords[0] = x; 
     coords[1] = y; 
    } 

請參考以下鏈接

How to manage overlays in MapViewCompassDemo in android sdk samples