2016-03-02 67 views
0

我正在嘗試將ImageView拖動到Google地圖上,並將其作爲標記放置。 地圖是FrameLayoutGoogle Maps API。投影

<FrameLayout 
     android:id="@+id/map_frg" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="2"> 

我設置這個FrameLayoutOnDragListener

private class PinDragListener implements View.OnDragListener { 

     private GoogleMap map; 

     public PinDragListener(GoogleMap map) { 
      this.map = map; 
     } 

     @Override 
     public boolean onDrag(View v, DragEvent event) { 
      switch (event.getAction()) { 
       case DragEvent.ACTION_DROP: 
        MarkerOptions markerOptions = new MarkerOptions() 
          .draggable(true) 
          .anchor(0.0f, 1.0f); 
        int[] coords = new int[2]; 
        v.getLocationOnScreen(coords); 
        Projection projection = map.getProjection(); 
        LatLng latLng = projection.fromScreenLocation(new Point(coords[0], coords[1])); 
        markerOptions.position(latLng); 
        markerOptions.visible(true); 
        map.addMarker(markerOptions); 
        break; 
       default: 
        break; 
      } 
      return true; 
     } 
    } 

但是,當圖像被丟棄的地方標記連連置於左上角。什麼可能是錯誤的?

UPDATE:通過監聽

我通過拖動查看

private class PinTouchListener implements OnTouchListener { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       ClipData data = ClipData.newPlainText("", ""); 
       DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v); 
       v.startDrag(data, shadowBuilder, v, 0); 
       dragPinListener.onViewTouched(v); 
       return true; 
      } else { 
       return false; 
      } 
     } 
    } 

和我每天在我做出退學標記

x = 0 | y = 1234 
Lat = 65.96291676309829 | Lng = -18.548969998955727 

回答

0

我需要時間得到了這樣的座標在中使用event.getX()和方法OnDragListener檢索當前視圖屏幕位置。

1

將爲在拖放過程中發生的每個特定事件調用OnDragListener.onDrag()方法,傳遞DragEvent來描述每個事件的細節。 每個DragEvent都將執行以下操作之一:

ACTION_DRAG_LOCATION:使用該視圖內的拖動的當前位置發送到ACTION_DRAG_ENTERED和ACTION_DRAG_EXITED之間的視圖。 ·該位置可以通過getX()和getY()獲得。

它是如何工作的 這裏是example的拖放功能,我們已經創建了一個實現OnDragListener接口的自定義ImageView。

請參考以下鏈接: http://www.tutorialspoint.com/android/android_drag_and_drop.htm https://github.com/wada811/Android-View-Drag-And-Drop-Sample/blob/master/app/src/main/java/com/wada811/android_view_drag_and_drop_sample/DragAndDropFrameLayout.java

希望它能幫助。