当我搜索地址时,我希望地图缩放到搜索(标记)位置。
我一直在浏览论坛并找到建议,但无法正常工作。
代码样例
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: {lat: 52.0, lng: 1.0}
});
var geocoder = new google.maps.Geocoder();
document.getElementById('submit').addEventListener('click', function() {
geocodeAddress(geocoder, map);
});
}
function geocodeAddress(geocoder, resultsMap) {
var address = document.getElementById('address').value;
geocoder.geocode({'address': address}, function(results, status) {
if (status === 'OK') {
resultsMap.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: resultsMap,
position: results[0].geometry.location
});
map.setZoom(14);
map.panTo(Marker.position);
}
else {
alert('clever text here: ' + status);
}
});
任何想法将不胜感激。
最佳答案
geocodeAddress()函数内部的setZoom(14)无法正常工作,因为您是从错误的地图对象引用中调用的。您应该调用resultsMap.setZoom(14)而不是map.setZoom(14)。"map"
变量在函数initMap()中声明,并在调用geocodeAddress()函数时作为参数传递:geocodeAddress(geocoder, map)
。
现在,在geocodeAddress()的方法定义中,地图对象引用已更改为"resultsMap"
参数名称:function geocodeAddress(geocoder, resultsMap){...}
。这就是为什么您必须在geocodeAddress()函数内使用resultsMap.setZoom(14)
的原因。
这是JSFiddle中的一个工作示例。
希望这可以帮助!
关于javascript - 缩放以搜索(标记)位置Google Maps API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55262010/