Javascript - 谷歌地图v3 - 获取标记的位置

时间:2011-04-15 12:41:20

标签: javascript arrays google-maps google-maps-api-3

感谢这个网站和您的帮助,我几乎完成了我的Googlemaps脚本。还有一件事,我需要你的帮助:

我的地图上有多个标记。

我想:

- 在变量中保存每个标记位置 - 在地图下方制作链接到标记的外部链接
- 点击这些链接更改mapcenter(如上所述)

到目前为止,这是我的脚本:

   <script type="text/javascript">
    var offender_locations = [
        ["10001", "Title 2", "icon.png"],
        ["10002", "Title 3", "icon.png"],
        ["10010", "home", "icon.png"]
    ];

    var myOptions = {
        zoom: 12,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("results_map"), myOptions);
    var latlng = new google.maps.LatLng(0, 0);

    for (i = 0; i < offender_locations.length; i++) {
        var infowindow = new google.maps.InfoWindow(),
            geocoder_map = new google.maps.Geocoder(),
            address = offender_locations[i][0],
            icon_img = offender_locations[i][2];
        (function(addr, img, i) {
            geocoder_map.geocode({
                'address': addr
            }, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    map.setCenter(results[0].geometry.location);
                    var marker = new google.maps.Marker({
                        map: map,
                        position: map.getCenter(),
                        icon: img
                    });
                    google.maps.event.addListener(marker, 'click', (function(marker, i) {
                        return function() {
                            infowindow.setContent(offender_locations[i][1]);
                            infowindow.open(map, marker);
                        }
                    })(marker, i));

                } else {
                    alert("error!");
                }
            });
        }(address, icon_img, i));
    }

    function zoomin() {
        map.setZoom(15);
    };

    function zoomout() {
        map.setZoom(15);
    }
</script>

最后两个小功能用于点击外部链接。此时它们只会改变缩放级别而不会更改地图中心。

2 个答案:

答案 0 :(得分:1)

尝试将标记推送到数组,以便稍后查看。

一开始做var markers = [];

然后在每个标记声明后markers.push(marker);

答案 1 :(得分:0)

您还可以使用对象存储您的标记或其他图层,以防您以后通过主键访问它们:

var markers = {};

markers['car_1'] = marker;

//change the position of 'car_1'
markers['car_1'].setPosition(x,y);

//you also can create much more complex structure like this
marker['car_2'] = {'title': 'Car 1', _ref: marker};

//change the position of 'car_2'
markers['car_2']._ref.setPosition(x,y);

注意:确保您的对象键(在我们的例子中:car_1,car_2)不相同(主键)。