我正在尝试显示用户在网络表单中输入的地址的标记。问题是我收到以下错误
无法调用未定义的方法'getSouthWest'
当我尝试使用以下代码显示标记时:
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
//Remove all markers from the map
clearMarkers();
//Display the new marker on the map
showFullAddressesOnMap(latitude, longitude, address);
//Center the map according to the marker
map.fitBounds(results[0].geometry.bounds);
}
});
function showFullAddressesOnMap(latitude, longitude, fullAddress) {
displayMarker(-1, "", "", "", fullAddress, true, latitude, longitude);
}
function displayMarker(appID, title, image, imageType, address, markerType, lat, lng) {
var listingLatLng = new google.maps.LatLng(lat, lng);
var marker = new google.maps.Marker({
position: listingLatLng,
map: map,
icon: markerType ? imgBluePin : imgGreenPin,
title: title + address
});
var content = GetContent(appID, title, image, imageType, address);
marker.info = new google.maps.InfoWindow({
content: content,
size: new google.maps.Size(50, 50)
});
google.maps.event.addListener(marker, 'click', function () {
closeAllWindows();
marker.info.open(map, marker);
});
bounds.extend(listingLatLng);
map.fitBounds(bounds);
markers.push(marker);
}
此外,每次都不会发生错误。这是一个崩溃代码的地址。
France,Ile-de-France,Paris,75006,Paris,7 rue casimir delavigne
我认为在调用FitBounds
时会导致错误。发生错误时,地理编码返回的边界将缩小为省级别。
错误的原因是什么?当用户输入带有街道名称的地址时,我需要将地图缩放到街道级别。
答案 0 :(得分:4)
界限未在某处定义。
您必须在displayMarker可以访问的范围内定义它,然后才能使用它的方法或将其用作方法的参数:
bounds=new google.maps.LatLngBounds();