Я переключаюсь от v2 до API карт v3 google и получил проблему с gMap.getBounds()
функция.
Я должен получить границы своей карты после ее инициализации.
Вот мой код JavaScript:
var gMap;
$(document).ready(
function() {
var latlng = new google.maps.LatLng(55.755327, 37.622166);
var myOptions = {
zoom: 12,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
gMap = new google.maps.Map(document.getElementById("GoogleMapControl"), myOptions);
alert(gMap.getBounds());
}
);
Таким образом, теперь это предупреждает меня это gMap.getBounds()
не определено.
Я попытался получить значения getBounds в событии щелчка, и оно хорошо работает для меня, но я не могу получить те же результаты в событии карты распределения памяти при загрузке.
Также getBounds хорошо работает, в то время как документ загружается в Google Maps API v2, но он перестал работать в V3.
Вы могли помочь мне решить эту проблему?
На заре API v3 метод getBounds ()
требовал, чтобы фрагменты карты завершили загрузку, чтобы он возвращал правильные результаты. Однако теперь кажется, что вы можете прослушивать событие bounds_changed
, которое запускается еще до события tileloaded
:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps v3 - getBounds is undefined</title>
<script src="http://maps.google.com/maps/api/js?sensor=false"
type="text/javascript"></script>
</head>
<body>
<div id="map" style="width: 500px; height: 350px;"></div>
<script type="text/javascript">
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 12,
center: new google.maps.LatLng(55.755327, 37.622166),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
google.maps.event.addListener(map, 'bounds_changed', function() {
alert(map.getBounds());
});
</script>
</body>
</html>
Он должен работать, по крайней мере, согласно документации для getBounds(). Тем не менее:
var gMap;
$(document).ready(function() {
var latlng = new google.maps.LatLng(55.755327, 37.622166);
var myOptions = {
zoom: 12,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
gMap = new google.maps.Map(document.getElementById("GoogleMapControl"), myOptions);
google.maps.event.addListenerOnce(gMap, 'idle', function(){
alert(this.getBounds());
});
});
Посмотрите, как это работает здесь.