我需要根据用户在CMS中设置的地址在地图上放置自定义标记。通过使用该地址,我希望获得该区域的纬度/长度,并且通过使用谷歌地图api,将其放置在正确的位置。这是我的代码:
function getLatLong(address, callback){
var geo = new google.maps.Geocoder;
geo.geocode({'address':address},function(results, status){
if (status == google.maps.GeocoderStatus.OK) {
callback (results[0].geometry.location.k + ',' + results[0].geometry.location.D);
} else {
return;
}
});
}
$(document).ready(function(){
getLatLong("<?= $r['address'] ?>", function(addr){
console.log(addr);
function initialize() {
var mapOptions = {
zoom: 15,
scrollwheel: false,
center: new google.maps.LatLng(addr)
}
var map = new google.maps.Map(document.getElementById('footer-map'),
mapOptions);
var image = '<?= parseLink("images/map-marker.png") ?>';
var myLatLng = new google.maps.LatLng(addr);
var beachMarker = new google.maps.Marker({
position: myLatLng,
map: map,
icon: image
});
console.log('loaded');
}
google.maps.event.addDomListener(window, 'load', initialize);
})
});
所以它返回带有纬度/经度的console.log(addr)
,如果我在center: new google.maps.LatLng(addr)
而不是addr
中复制该值,一切正常,但是如果我离开addr
在那里,它只是没有加载地图。
我做错了什么?
答案 0 :(得分:2)
无需使用results[0].geometry.location.k + ',' + results[0].geometry.location.D
,因为results[0].geometry.location
本身就是一个LatLng对象
以下是完整的代码:
<script>
function getLatLong(address, callback){
var geo = new google.maps.Geocoder;
geo.geocode({'address':address},function(results, status){
if (status == google.maps.GeocoderStatus.OK) {
console.log(results[0].geometry.location);
callback(results[0].geometry.location);} else{return;} });}
$(document).ready(function(){
getLatLong("indore", function(addr){
console.log(addr);
var mapOptions = {
zoom: 4,
center: addr
}
var map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
var myLatLng = addr;//new google.maps.LatLng(addr);
var beachMarker = new google.maps.Marker({
position: myLatLng,
map: map
});
console.log('loaded');})
});</script></head>
"<?= $r['address'] ?>"
和标记图片,请重新添加