2

下面的代码正在运行。但它没有使用初始化的标准函数,这就是为什么我不能使用在线示例为地图上的每个地址制作自定义信息窗口。

我必须如何定义它才能让它工作?

var address = <?php echo json_encode($adr); ?>; //define address array here
var map = new google.maps.Map(document.getElementById('map'), {
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    zoom: 10
});    
var geocoder = new google.maps.Geocoder();
var image = 'http://www.site.com/images/hi.png';
var nbAddresses = address.length;
for (var i=0;i<nbAddresses;i++){
    geocoder.geocode({
        'address': address[i]
    }, 
    function(results, status) {
        if(status == google.maps.GeocoderStatus.OK) {
            new google.maps.Marker({
                position: results[0].geometry.location,
                map: map,
                icon: image,
                title:"Hello"
            });
            map.setCenter(results[0].geometry.location);
        }
    });
}    
4

1 回答 1

2

这是应该完成工作的Javascript

工作演示

脚本:

geocoder.geocode({
        'address': add
    }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            mark = new google.maps.Marker({
                position: results[0].geometry.location,
                map: map
            });
            map.setCenter(results[0].geometry.location);
            setInfoWindow();
        }
    });

    function setInfoWindow() {
        google.maps.event.addListener(mark, 'click', function(event) {
            var iwindow = new google.maps.InfoWindow();
            iwindow.setContent(event.latLng.lat() + "," + event.latLng.lng());
            iwindow.open(map, this);

        });
    }

更新: 使用循环演示如何在地理编码成功后将标题值分配给制造商-

小提琴

这里的关键是用于获取地址的循环变量在子函数的范围内不可用,因此您需要创建一个全局变量并将其递增以从数组中获取标题的新值。

于 2013-01-02T09:49:13.827 回答