خرائط Google Map.getBounds () مباشرة بعد مكالمة إلى Map.FitBounds
-
29-09-2019 - |
سؤال
أنا أتصل بـ GetBounds () مباشرة بعد مكالمة إلى FitBounds () ، وأعتقد أنني سأحصل على حدود صالحة لأن الخريطة الحديثة والتكبيرات لتناسب الحدود. لسوء الحظ ، يعود getBounds () إلى شيء.
رمز إعادة إنتاج هذا كما يلي:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<style>
#map {
width: 800px;
height: 400px;
}
</style>
</head>
<body>
<div id='map'></div>
<script>
var myLatlng1 = new google.maps.LatLng(-38.397, 150.644);
var myLatlng2 = new google.maps.LatLng(-34.897, 150.844);
var myLatLngBounds = new google.maps.LatLngBounds(myLatlng1, myLatlng2);
var myOptions = {
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: new google.maps.LatLng(0, 0),
zoom: 0
}
var map = new google.maps.Map(document.getElementById("map"), myOptions);
map.fitBounds(myLatLngBounds);
console.log(map.getMapTypeId());
console.log(map.getZoom());
console.log(map.getBounds());
</script>
</body>
</html>
هل هناك شيء أفتقده؟ لم أتمكن من العثور على أي شيء في المستندات حول هذا الموقف. أقرب ما أحصل عليه هو ملاحظة على getBounds تقول:
إذا لم تتم تهيئة الخريطة بعد (أي لا تزال MAPTYPE فارغة) ، أو لم يتم تعيين الوسط والتكبير ، فإن النتيجة لاغية.
لاحظ أن Getzoom يعود غير محدد أيضًا. هل FitBounds () لا تحدد هذه القيمة؟
تعديللقد قمت بتحديث الكود باستخدام Zoom والمركز الافتراضي ، وفقًا لاقتراحات Marcelo.
المحلول
سيتعين عليك الحصول على الحدود بعد الحدوث الحدود.
نصائح أخرى
كما @crazyenigma اقترح, ، يمكنك الحصول على الحدود بعد bounds_changed
تم تشغيل الحدث:
map.fitBounds(myLatLngBounds);
google.maps.event.addListener(map, 'bounds_changed', function() {
console.log(map.getMapTypeId());
console.log(map.getZoom());
console.log(map.getBounds());
});
ما سبق سيطبع ما يلي إلى وحدة التحكم الخاصة بك:
roadmap
6
Object
لاحظ أنه إذا كنت تريد فقط getBounds
وتفعل شيئًا مرة واحدة ، يجب أن تحل محل addListener
مع addListenerOnce
(شكرًا ، @tomas).
استخدم AddListenerOnce عند تحميل البلاط
google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
map.setCenter(myLatLngBounds)
});
الجواب في اقتباسك الخاص. يجب عليك تعيين المركز والتكبير لتهيئة الخريطة.
لاحظ أنه في مستندات مواصفات كائن MapOptions ، يتم تمييز قيم المركز والتكبير كـ مطلوب:
http://code.google.com/apis/maps/documentation/javaScript/Reference.html#mapoptions