0

我有一個簡單的Google地圖專長,我正在嘗試並未能完成。似乎無法在Google地圖上獲得標記點擊次數

目前,我可以顯示我的地圖,然後通過PHP(我使用ExpressionEngine)循環瀏覽項目列表,並將每個項目的緯度/經度添加到JavaScript數組中。

一旦這些值在JavaScript數組中,我就使用jQuery循環遍歷每個數組,並向地圖添加一個標記。

我可以點擊地圖並使其正確響應;但是,當我嘗試點擊其中一個標記時,根本沒有任何反應。

我嘗試過移動代碼,重命名,更改,編輯和調整無盡......我無法弄清楚這一點。任何幫助都將非常感激。我的代碼如下:

<script> 

    // Create the new map_locations array 
    var map_locations = []; 

</script> 



<!-- The following ExpressionEngine script loops through all the 'projects' on the site, 
    then pushes each project to the map_locations array. --> 
{exp:channel:entries channel="projects"} 

    <script> 


    map_locations.push(['{url_title}', '{project_latitude}', '{project_longitude}', '{categories}{category_name}{/categories}', '{title}']); 


    </script> 

{/exp:channel:entries} 



<script> 


var marker; 


function initialize() { 

    // To add the marker to the map, use the 'map' property 
    var mapOptions = { 

     center: { lat: 51.884 , lng: -95.147 }, 
     zoom: 4 

    }; 

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


    // Create a new location lat/long var, newLatLng 
    var newLatLng; 




    var contentString = "<div id='info_window'>this is the info window</div>" 


    var infowindow = new google.maps.InfoWindow({ 

    content: contentString 

    }); 



    var iconBase = '/images/map_icon_'; 



    $.each(map_locations, function() 
    { 

    newLatLng = new google.maps.LatLng(this[1] , this[2]); 

    marker = new google.maps.Marker({ 

     position: newLatLng, 
     map: map, 
     title: this[4], 
     icon: iconBase + this[3] 

    }); 

    }); 



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

    console.log("This marker's url_title is: " + this[0]); 

    }); 

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

    console.log("Testing map click"); 

    }); 



} 



// Initialize the map 
google.maps.event.addDomListener(window, 'load', initialize); 



</script> 

回答

1

正試圖在那裏被定義的,而不是在循環的循環後添加事件偵聽標誌​​

嘗試:

$.each(map_locations, function(){ 

    var newLatLng = new google.maps.LatLng(this[1] , this[2]); 

    var marker = new google.maps.Marker({ 

     position: newLatLng, 
     map: map, 
     title: this[4], 
     icon: iconBase + this[3] 

    }); 
    google.maps.event.addListener(marker, 'click', function(marker) { 
     console.log("This marker's url_title is: " + marker.title); 
    }); 

    }); 
+0

謝謝charlietfl! 我不得不作出一個更正:我將marker.title更改爲this.title。以前,marker.title返回「This marker的url_title是:undefined」,但現在它返回了預期的數據。 非常感謝您的幫助!你只是讓我的一週! – Chris

+0

我沒有看文檔,我認爲回調的第一個參數是標記...我的壞 – charlietfl

相關問題