3

我在我的項目中使用谷歌地圖MapView。當用戶用戶點擊地圖上的特定標記時,我需要創建一個像Google地圖那樣的對話框,並且需要將該用戶單擊的對話框(視口內部)定位。 如何將對話框的位置設置爲用戶點擊地圖的位置? 我已經看到對話框的API將它的位置設置爲一些座標,但不知道如何獲得用戶點擊的座標。如何將對話框的位置設置爲用戶點擊MapView的位置?

謝謝。

回答

0

這裏是爲Android拖放引腳的示例代碼上的MapView See This

+0

代碼所做的就是坦然太大。你能指定定位對話框點擊位置的代碼位置嗎? – Nitin 2012-08-11 04:57:05

1

註冊地圖上點擊處理程序。

// Capture map click event. 
google.maps.event.addListener(YourMap 'click', $.proxy(this.mapClickHandler, this)); 

在該函數中,您將返回事件對象。從這您可以檢索經緯度和長按鼠標。如果您有標記,則可以使用這些值在地圖上設置其位置。

mapClickHandler = function (event) 
{ 
    var position = new google.maps.LatLng(event.latLng.lat(), event.latLng.lng()) 
    // Main Marker. Or in your case a google maps dialogue. 
    this.marker.setPosition(position); 
} 

我想到你可能需要在x,y屏幕座標,我不知道這件事,我避免使用它們儘可能的,儘管它們可能是可作爲事件對象的屬性也。

找到了一個使用getProjection()來獲取屏幕位置座標的示例。不過,我的例子依靠擴展谷歌OverlayView。我不確定是否有從地圖本身獲取投影的方法。將不得不看看。在這一點上要顯示

MyOverlay.prototype = new google.maps.OverlayView(); 

var overlayProjection = this.getProjection(); 
var point = overlayProjection.fromLatLngToDivPixel(event.latLng); 
point.x; 
point.y; 
+0

請注意,你可以縮短它setPosition(event.latLng) – Emile 2012-08-30 13:35:37

1

化妝類MarkerPopup這是佈局,然後在方法的onTap像

@Override 
protected boolean onTap(int index) { 
    MyOverlayItem item = mOverlays.get(index); 
    MarkerPopup this.popup = new MarkerPopup(mapView); 
    MapView.LayoutParams params = new MapView.LayoutParams(
      MapView.LayoutParams.WRAP_CONTENT, // width 
      MapView.LayoutParams.WRAP_CONTENT, // height 
      item.getPoint(), MapView.LayoutParams.BOTTOM_CENTER); 
    params.mode = MapView.LayoutParams.MODE_MAP; 
    this.mapView.addView(popup, params); 


    // change parameter 
    popup.setLayoutParams(params); 
    // visibility 
    popup.setVisibility(View.VISIBLE); 
} 
+0

其實我已經創建了一個CustomItemizedOverlay擴展ItemizedOverlay並使用onTap方法來顯示該對話框。我無法在CustomizedOverlay類中獲取並設置MapView的LayouParams,因爲我無法在onTap方法中調用MapView.LayoutParams。 – Nitin 2012-08-30 17:52:13

+0

如何通過使用MapView.LayoutParams來設置彈出窗口的位置? – Nitin 2012-08-30 18:11:25

+0

抱歉,錯誤。它將在ontap方法上。 – Jone 2012-09-04 13:00:35

相關問題