Google maps 谷歌地图,点击链接后打开信息窗口

Google maps 谷歌地图,点击链接后打开信息窗口,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,我有以下代码来显示谷歌地图: <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> <script type="text/javascript"> function initialize() { var mapOptions = { zoom: 10, center: ne

我有以下代码来显示谷歌地图:

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script type="text/javascript">
function initialize() {

        var mapOptions = {
            zoom: 10,
            center: new google.maps.LatLng(40.714364, -74.005972),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        var map = new google.maps.Map(document.getElementById("googlemap"), mapOptions);


        var locations = [
            ['New York', 40.714364, -74.005972, 'http://www.google.com/intl/en_us/mapfiles/ms/micons/green-dot.png']
        ];


        var marker, i;
        var infowindow = new google.maps.InfoWindow();


        google.maps.event.addListener(map, 'click', function() {
            infowindow.close();
        });


        for (i = 0; i < locations.length; i++) {
            marker = new google.maps.Marker({
                position: new google.maps.LatLng(locations[i][1], locations[i][2]),
                map: map,
                icon: locations[i][3]
            });


            google.maps.event.addListener(marker, 'click', (function(marker, i) {
                return function() {
                    infowindow.setContent(locations[i][0]);
                    infowindow.open(map, marker);
                }
            })(marker, i));
        }

    }
    google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="googlemap" style="width: 100%; height: 500px;"></div>
<a href="#">Open Info Window</a>

函数初始化(){
变量映射选项={
缩放:10,
中心:新google.maps.LatLng(40.714364,-74.005972),
mapTypeId:google.maps.mapTypeId.ROADMAP
}
var map=new google.maps.map(document.getElementById(“googlemap”)、mapOptions);
变量位置=[
[纽约,40.714364,-74.005972,'http://www.google.com/intl/en_us/mapfiles/ms/micons/green-dot.png']
];
var标记,i;
var infowindow=new google.maps.infowindow();
google.maps.event.addListener(映射,'click',函数(){
infowindow.close();
});
对于(i=0;i
这不是最终的代码,因为我想添加更多的标记

问题是,我需要外部链接来打开标记的信息窗口。


例如:

链接1从标记1打开信息窗口
链接2从标记2打开信息窗口
等等

我需要这样的链接:

<a href="javascript:marker(0)">Open Info Window One</a>
var markers = [];
// The array where to store the markers

function initialize() {

        var mapOptions = {
            zoom: 10,
            center: new google.maps.LatLng(40.714364, -74.005972),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        var map = new google.maps.Map(document.getElementById("googlemap"), mapOptions);


        var locations = [
            ['New York', 40.714364, -74.005972, 'http://www.google.com/intl/en_us/mapfiles/ms/micons/green-dot.png']
        ];


        var marker, i;
        var infowindow = new google.maps.InfoWindow();


        google.maps.event.addListener(map, 'click', function() {
            infowindow.close();
        });


        for (i = 0; i < locations.length; i++) {
            marker = new google.maps.Marker({
                position: new google.maps.LatLng(locations[i][1], locations[i][2]),
                map: map,
                icon: locations[i][3]
            });

            google.maps.event.addListener(marker, 'click', (function(marker, i) {
                return function() {
                    infowindow.setContent(locations[i][0]);
                    infowindow.open(map, marker);
                }
            })(marker, i));

            // Push the marker to the 'markers' array
            markers.push(marker);
        }

    }
    google.maps.event.addDomListener(window, 'load', initialize);

    // The function to trigger the marker click, 'id' is the reference index to the 'markers' array.
    function myClick(id){
        google.maps.event.trigger(markers[id], 'click');
    }
<a href="#" onclick="myClick(0);">Open Info Window</a>

以下是我在JSFIDLE中的代码:

我找到了两种解决方案,但我不知道如何将此代码与我的代码一起使用。 它应该是这样工作的:


谢谢你的帮助

使用此代码我已经试过了

google.maps.event.addListener(marker, 'click', function() {

                   infoWindow.setContent(locations[i][0]);
                   infoWindow.open(map, marker);


      });
就像我的例子一样

  • 添加全局数组以保存对google.maps.Marker对象的引用:

    var gmarkers = [];
    
  • 创建标记时,将其推到该阵列上

    gmarkers.push(marker);
    
  • 在所需标记上触发“单击”事件:

    <a href="javascript:google.maps.event.trigger(gmarkers[0],'click');">Open Info Window</a>
    
    
    

  • 该示例所做的是创建一个存储标记的数组。因此,当创建标记时,它们会被推送到标记数组中。单击链接时,将发送一个索引,其中包含一个函数,该函数是对数组中标记的引用

    所以JavaScript看起来像这样:

    <a href="javascript:marker(0)">Open Info Window One</a>
    
    var markers = [];
    // The array where to store the markers
    
    function initialize() {
    
            var mapOptions = {
                zoom: 10,
                center: new google.maps.LatLng(40.714364, -74.005972),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            }
            var map = new google.maps.Map(document.getElementById("googlemap"), mapOptions);
    
    
            var locations = [
                ['New York', 40.714364, -74.005972, 'http://www.google.com/intl/en_us/mapfiles/ms/micons/green-dot.png']
            ];
    
    
            var marker, i;
            var infowindow = new google.maps.InfoWindow();
    
    
            google.maps.event.addListener(map, 'click', function() {
                infowindow.close();
            });
    
    
            for (i = 0; i < locations.length; i++) {
                marker = new google.maps.Marker({
                    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
                    map: map,
                    icon: locations[i][3]
                });
    
                google.maps.event.addListener(marker, 'click', (function(marker, i) {
                    return function() {
                        infowindow.setContent(locations[i][0]);
                        infowindow.open(map, marker);
                    }
                })(marker, i));
    
                // Push the marker to the 'markers' array
                markers.push(marker);
            }
    
        }
        google.maps.event.addDomListener(window, 'load', initialize);
    
        // The function to trigger the marker click, 'id' is the reference index to the 'markers' array.
        function myClick(id){
            google.maps.event.trigger(markers[id], 'click');
        }
    
    <a href="#" onclick="myClick(0);">Open Info Window</a>
    

    示例:

    你为什么不试一下呢?我试了好几次,但都没用。你能把JSFIDLE发给我吗?它对我不起作用。我不明白这个代码应该如何工作。您可能读错了问题了吗?在initialize()之外声明您的var映射,然后使用这个
    map=new google.maps.map(document.getElementById(“googlemap”)、mapOptions)替代了
    var-map=new google.maps.map(document.getElementById(“googlemap”)、mapOptions之后,您可以使用javascript
    onclick()
    在show begins中调用一个函数,或者另一个alter native方法可以是[Thank you!!!我使用了您的代码,因为额外的“myClick”函数-这正是我需要的。如何修改我的代码()使用您的工作解决方案?谢谢。回答得很好!非常适合我的需要!您能解释一下为什么我们要将marker和i传递给一个新函数,然后再次返回一个函数吗?为什么一个简单的函数不能使用变量“marker”?