谷歌地图 V3 JS 在 iOS6(iPhone)的 UIWebView 中无法响应“center_changed”事件。

6

我正在尝试在的UIWebView中显示GoogleMap(Google maps V3 JS)

但是,当我在webview中移动地图时,事件没有触发center_changed

只有当移动地图完成后,事件才会触发。

为什么呢?

有人告诉我这个页面:http://gmaps-samples-v3.googlecode.com/svn/trunk/map_events/map_events.html

Mac的Safari在地图移动时会触发center_changed事件。

iOS6的Safari在移动地图完成后才会触发center_changed事件。

我想知道在移动地图时地图的中心坐标,请告诉我一个好方法。

`<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: iPhone Geolocation</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var map;
var moveCenterLat;
var moveCenterLng;

function initialize() {
    var myOptions = {
    zoom:reqZoomLevel,
    disableDefaultUI:true,
    draggable:true,
    keyboardShortcuts:false,
    scrollwheel:false,
    mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

google.maps.event.addListener(map, 'center_changed', function(){
    var mce = map.getCenter();
    moveCenterLat = mce.lat();
    moveCenterLng = mce.lng();
});

}
</script>
</head>
<body style="margin:0px; padding:0px;" onload="initialize()">
<div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>`
2个回答

1
这是在IOS设备上使用谷歌地图时无法实现的功能。当拖动地图时,虽然会触发center_changed事件,但中心点不会在拖动过程中更新。所以答案是“不行”,你不能做到这一点。

-1

看起来你想要的是 drag 事件,而不是 center_changed。根据 Google Maps Javascript API V3 Reference

drag:当用户拖动地图时,该事件会被重复触发。

像这样:

google.maps.event.addListener(map, 'drag', function(){
    var mce = map.getCenter();
    moveCenterLat = mce.lat();
    moveCenterLng = mce.lng();
});

编辑:看起来地图边界在拖拽时不再更新,所以虽然在拖拽地图时会触发拖拽事件,但是getCenter()返回的是拖拽开始时的地图坐标。感谢@Zubair指出这一点。


1
这是不正确的,因为当地图移动时,拖动确实会触发,但纬度和经度没有更新,实际上它们是拖动操作开始时的值。 - yazzapps.com
@Zubair:这肯定曾经有效,但你是正确的,它不再更新了。在这里查看fiddle http://jsfiddle.net/lazd/ReLf7/ - lazd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接