Подтвердить что ты не робот

Google Maps, открыть информационное окно после щелчка по ссылке

У меня есть этот код для отображения карты google:

<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>

Это не окончательный код, потому что я хочу добавить больше маркеров.

Проблема заключается в том, что мне нужны внешние ссылки, чтобы открыть информационное окно маркера.


Например:

Ссылка 1 открывает информационное окно от маркера 1
Ссылка 2 открывает информационное окно от маркера 2
и т.д...

Мне нужна ссылка примерно так:

<a href="javascript:marker(0)">Open Info Window One</a>

Вот мой код в jsfiddle: http://jsfiddle.net/fJ4jG/3/

Я нашел пару решений, но я не знаю, как использовать этот код вместе с моим кодом. Он должен работать следующим образом: http://www.geocodezip.com/v3_MW_example_map2.html

Спасибо за любую помощь!

4b9b3361

Ответ 1

Что делает этот пример, он создает массив, в котором хранятся маркеры. Поэтому, когда маркеры создаются, они попадают в массив маркеров. Когда вы нажимаете на ссылку, вы отправляете индекс с функцией, которая является ссылкой на маркер в массиве.

Итак, JavaScript выглядит так:

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');
    }

И в теге HTML a вы добавляете функцию myClick следующим образом:

<a href="#" onclick="myClick(0);">Open Info Window</a>

Пример: http://jsfiddle.net/fJ4jG/9/

Ответ 2

Как и в моем примере.

  • добавить глобальный массив для сохранения ссылок на объекты google.maps.Marker:

    var gmarkers = [];
    
  • нажмите маркеры на этот массив при их создании

    gmarkers.push(marker);
    
  • запускает событие "click" на нужный маркер:

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

jsfiddle

Ответ 3

используйте этот код, я уже пробовал его

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

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


      });