2014-11-06 3 views
1

Хотя почему-то есть несколько вопросов, связанных с моим вопросом, вот почему мой вопрос отличается. Используя Phonegap, у меня есть index.html и gmap.html. На моем index.html мой HREF содержит параметры:Добавить событие onclick на маркер Google Maps v3

пример: gmap.html?&name=Agustina%20Apartments&lat=14.625486&lng=121.02333099999998

я смог разобрать параметры и поставить маркер на карте. Тем не менее, я хочу назначить onclick на маркере. У меня есть этот код:

google.maps.event.addListener(marker, 'click', callNumber('84'));

Теперь, что я пытаюсь сделать, это когда пользователь нажимает на маркере, сопровождаемый contact_number будет открыт на дозвоне телефонов так что пользователь может вызвать создание. У меня есть код, который устанавливает маркер с использованием координат из URL. Я попытался поместить его в мой onSuccess обратный вызов моего метода navigator.geolocation.watchPosition с таймаутом 5 секунд. То, что происходит каждые 5 секунд, появится номер телефона с номером телефона (из-за таймаута). Однако, когда я нажимаю на маркер, ничего не происходит. Я попытался поместить его в мою функцию initialize(), но он показал дозвонщик перед отображением карты, а маркер не смог обнаружить события щелчка.

Вот более подробный код:

function initialize() { 
    var mapOptions = { 
    zoom: 14, 
    center: new google.maps.LatLng(14.6333, 121.0333) 
    }; 


    map = new google.maps.Map(document.getElementById('map-canvas'), 
     mapOptions); 

    var estabCenter = new google.maps.LatLng(lat,lng); 
    var estabMarker = new google.maps.Marker({ 
    map: map, 
    position: estabCenter 
    }); 
    var estabCircle = new google.maps.Circle({ 
    map: map, 
    strokeColor: '#FF0000', 
     strokeOpacity: 0.8, 
     strokeWeight: 2, 
    center: estabCenter 
    }); 

    estabCircle.setRadius(100); 

    google.maps.event.addListener(estabMarker, 'click', callNumber('84')); 
// Try HTML5 geolocation 
if(navigator.geolocation) { 
    mapAutoUpdate(); 
    } else { 
    // Browser doesn't support Geolocation 
    handleNoGeolocation(false); 
    } 
} 

function callNumber(number){ 
    window.open('tel:'+number+'', '_system'); 
} 

Спасибо за тех, кто мне поможет.

ответ

2

Поставка функции, как функции обратного вызова, а не функция вызова (кроме вызова возвращает другую функцию):

google.maps.event.addListener(estabMarker, 'click', function(){callNumber('84');}); 
+0

'Поставка функции в качестве обратного вызова, а не функция вызова (кроме вызова возвращает другую функцию) «Одного предложения достаточно. Удивительно. Спасибо, сэр. – Jeongbebs

+0

Могу ли я спросить, почему вызов функции не работает, давая ей 'function'? – Jeongbebs

+1

Функция будет выполняться, когда событие было запущено, но вызов функции будет выполнен незамедлительно (когда браузер оценивает конкретную строку/оператор) –

Смежные вопросы