Google Maps v3 – 如何在初始化时使用地址居中?
使用Google Maps API v3,有没有办法在初始化时设置地图的中心? 我有一个解决方法使用此代码:
var geocoder; var map; function initialize() { geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(-34.397, 150.644); var myOptions = { zoom: 8, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); codeAddress('germany'); } function codeAddress(address) { geocoder.geocode( { 'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } }); }
唯一的问题是,它初始化时,它在一瞬间将其集中到“latlng”。 我无法弄清楚如何在“myOptions”中设置中心。 我虽然我可以从codeAddress函数返回“results [0] .geometry.location”,并将其传递给myOptions,但这是行不通的。
谢谢你的帮助。
更新由于我不能完全删除“中心”,我想知道是否有办法将地址传递给选项。
来自Google API:
要初始化Map,我们首先创build一个Map选项对象来包含地图初始化variables。 这个对象不是构造的; 而是创build为对象字面值。 每个地图都有两个必需的选项: 中心和缩放 。
那么一个简单的解决scheme可能是初始化您的codeAddress函数中的地图:
var geocoder, map; function codeAddress(address) { geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address': address }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { var myOptions = { zoom: 8, center: results[0].geometry.location, mapTypeId: google.maps.MapTypeId.ROADMAP } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } }); }
这应该解决问题。