我在我的项目中使用谷歌地图MapView。当用户用户点击地图上的特定标记时,我需要创建一个像谷歌地图一样的对话框,我需要将用户点击的对话框定位(在视口内)。 如何将对话框的位置设置为用户点击地图的位置? 我已经看过Dialog的API将它的位置设置为某个坐标,但不知道如何获得用户点击的点的坐标。
谢谢。
答案 0 :(得分:1)
注册地图点击处理程序。
// Capture map click event.
google.maps.event.addListener(YourMap 'click', $.proxy(this.mapClickHandler, this));
在该功能中,您将获得事件对象。从这里你可以检索lat和long鼠标点击。如果您有标记,则可以使用这些值在地图上设置其位置。
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;
答案 1 :(得分: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);
}
答案 2 :(得分:0)
以下是mapview See This
上Android安卓拖放图钉的示例代码