Google maps api 3 Google maps v3按地址或位置对多个自定义标记进行地理编码

Google maps api 3 Google maps v3按地址或位置对多个自定义标记进行地理编码,google-maps-api-3,Google Maps Api 3,我需要通过地址或lat/lon使用MapsV3 api绘制多个自定义地图标记。我将以下代码放在一起,这些代码对lon/lat正常工作,但如果数据包含地址,地理编码器将不返回任何内容。关于如何解决这个问题有什么想法吗 $(document).ready(function () { initialize(); }); function initialize() { var centerMap = new google.maps.LatLng(-27.0,13

我需要通过地址或lat/lon使用MapsV3 api绘制多个自定义地图标记。我将以下代码放在一起,这些代码对lon/lat正常工作,但如果数据包含地址,地理编码器将不返回任何内容。关于如何解决这个问题有什么想法吗

    $(document).ready(function () { initialize(); });   

     function initialize() {
        var centerMap = new google.maps.LatLng(-27.0,133.0);

        var options = {
            panControl: false,
            zoomControl: true,
            scaleControl: false,
            mapTypeControl: false,
            streetViewControl: false,
            zoom: 3,
            center: centerMap,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }

        var map = new google.maps.Map(document.getElementById("map"), options);




                  var data = [
                    {
                    'title':'F C Building Construction ...',
                    'address':'', 
                    'zindex':20,
                    'lat':'-33.797847', 
                    'lon':'151.259928', 
                    'marker_number':1,
                    'marker_html':' html content...',
                    'image': {
                        url:'//localhost/assets/images/markers/marker_1.png', 
                        size: new google.maps.Size(24, 29), 
                        origin: new google.maps.Point(0,0), 
                        anchor: new google.maps.Point(10, 29)
                    }
                    }];

            setMarkers(map, data);

                    var infowindow = new google.maps.InfoWindow();

    }

    function showMapPin(i) { } 

    function setMarkers(map,data) {         
        var bounds = new google.maps.LatLngBounds();
        for (var i = 0; i < data.length; i++) {
            setMarker(map, data[i], bounds);
        }
        map.fitBounds(bounds);
    }

    function setMarker(map, m, bounds) {

        if(m["address"]!="") {
            var geocoder = new google.maps.Geocoder();
            geocoder.geocode( { "address": m["address"] }, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    var siteLatLng = results[0].geometry.location;
                } 
            });


        } else {
            var siteLatLng = new google.maps.LatLng(m["lat"], m["lon"]);
        }

        if(siteLatLng) {

            var marker = new google.maps.Marker({
                position: siteLatLng,
                map: map,
                //shadow: shadow,
                icon: m["image"],
                title: m["title"],
                zIndex: m["zindex"],
                html: m["marker_html"]
            });

            bounds.extend(siteLatLng);

            google.maps.event.addListener(marker, "click", function() {
                infowindow.setContent(this.html);
                infowindow.open(map, this);
            });

        } // if latlng  
    }//]]>
$(document).ready(函数(){initialize();});
函数初始化(){
var centerMap=new google.maps.LatLng(-27.0133.0);
变量选项={
泛控制:错误,
动物控制:对,
scaleControl:false,
mapTypeControl:false,
街景控制:错误,
缩放:3,
中心:中心地图,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
var map=new google.maps.map(document.getElementById(“map”),选项);
风险值数据=[
{
“标题”:“F C建筑施工…”,
“地址”:“,
“zindex”:20,
‘lat’:‘-33.797847’,
‘lon’:‘151.259928’,
“标记号”:1,
“marker_html”:“html内容…”,
“图像”:{
url:“//localhost/assets/images/markers/marker_1.png”,
尺寸:新谷歌地图尺寸(24,29),
来源:新google.maps.Point(0,0),
主持人:新谷歌地图点(10,29)
}
}];
设置标记(地图、数据);
var infowindow=new google.maps.infowindow();
}
函数showMapPin(i){}
函数集合标记(映射,数据){
var bounds=new google.maps.LatLngBounds();
对于(变量i=0;i

回顾代码后,我意识到变量siteLatLng在geocode函数范围内,因此它永远不会被传递,也无法返回。在该功能中设置标记是有效的