2

Я пытаюсь показать маркеры на своей карте. но это не показывает их.Маркеры, не отображающиеся на картах Google

это код, я использую:

var map; 
var markers = new Array(); 

function initialize() { 
    var mapOptions = { 
     zoom: 12, 
     center: new google.maps.LatLng(27.9881, 86.9253), 
    }; 
    var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 

    google.maps.event.addListener(map, 'click', addMarker); 
} 

function addMarker(event) { 
    markers.push(event.latLng); 

    marker = new google.maps.Marker({ 
     position: event.latLng, 
     map: map 
    }); 

    console.log(markers); 
} 

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

консоли вход на каждом щелкните новую координату, поэтому функция вызывается, и передаются координаты. И я не вижу никаких проблем с кодом маркера.

Так может ли кто-нибудь увидеть проблему?

+0

Посещение сегодня, и я просто вижу, что может быть удаление var из функции initialize() решит его :) –

ответ

3

map является локальной переменной, видимым только внутри initialize.

Использование this вместо map когда вы установите map -свойство маркера:

function addMarker(event) { 
    markers.push(event.latLng); 

    marker = new google.maps.Marker({ 
     position: event.latLng, 
     map: this 
    }); 
} 

Объяснение:

обратного вызова будет выполняться в рамках объекта, который вызывает событие , Здесь это экземпляр Maps (поскольку клик-слушатель был применен к карте), this будет ссылаться на этот объект внутри обратного вызова.

+0

Да, это было, THX! – Kiwi

2
markers.push(event.latLng); 

Здесь вы нажимаете latlng, а не маркер.

markers - это переменная массива с глобальной областью действия, тогда как является локальной переменной.
В массиве markers вы должны вставить каждый отдельный , а затем обработать его.

function addMarker(event) { 
    var marker = new google.maps.Marker({ 
     position: event.latLng, 
     map: map 
    }); 
    markers.push(marker); 
} 
Смежные вопросы