2014-11-06 89 views
1

尽管以某种方式,有几个问题与我的问题有关,这就是为什么我的问题是不同的。使用Phonegap,我有一个index.htmlgmap.html。在我index.html,我的HREF包含参数:在标记谷歌地图v3上添加onclick事件

例如:gmap.html?&name=Agustina%20Apartments&lat=14.625486&lng=121.02333099999998

我能够解析参数,并把标记在地图上。不过,我想指定标记上的onclick。我有这样的代码:

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

现在,我要做的是当上了标记用户点击时,伴随着contact_number将在手机上的拨号器打开,以便用户可以拨打建立。我有一个代码,它使用来自url的坐标设置一个标记。我尝试将其放入我的navigator.geolocation.watchPosition方法的onSuccess回调中,超时时间为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 2014-11-06 06:56:52

+0

我可以问为什么有一个函数调用不工作,而给它一个'函数'呢? – Jeongbebs 2014-11-06 07:36:23

+1

当事件被触发时,函数将被执行,但函数调用会立即执行(当浏览器评估特定的行/语句时) – 2014-11-06 16:10:24