Google maps V3 JS не произошло center_changed из UIWebView iOS6 (iPhone)

Я пытаюсь отобразить GoogleMap(Google maps V3 JS) в UIWebView(ios6).
но,
когда я перемещаю карту в веб-просмотре, событие не срабатывает center_changed.
Перемещение карты завершено, событие срабатывает.
Почему?
...
Кто-то сказал мне страницу:
http://gmaps-samples-v3.googlecode.com/svn/trunk/map_events/map_events.html
Доступ к Safri для Mac – срабатывает center_changed во время движения карты.
Доступ к Safri для iOS 6 – перемещение карты завершено, огонь 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>`

person user1752923    schedule 18.10.2012    source источник


Ответы (2)


Это то, что не работает на картах Google на устройствах IOS. Center_changed срабатывает при перетаскивании карты, но центр не обновляется до тех пор, пока перетаскивание не будет завершено. Итак, ответ: «Нет», вы не можете этого сделать.

person yazz.com    schedule 22.12.2013

Похоже, вам нужно событие drag, а не center_changed. Из Справочника Google Maps Javascript API V3:

drag: это событие повторяется, пока пользователь перетаскивает карту.

Что-то вроде этого:

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

Редактировать: кажется, что границы карты больше не обновляются при перетаскивании, поэтому, хотя событие перетаскивания действительно срабатывает во время перетаскивания карты, оба getCenter() возвращают координаты карты, когда началось перетаскивание. Спасибо @Zubair за указание на это.

person lazd    schedule 15.11.2012
comment
Это неверно, так как перетаскивание срабатывает при перемещении карты, широта и долгота не обновляются и фактически являются значениями в начале операции перетаскивания. - person yazz.com; 21.12.2013
comment
@Zubair: это определенно работало, но вы правы, оно больше не обновляется. См. скрипку здесь jsfiddle.net/lazd/ReLf7 - person lazd; 28.12.2013