2011-07-10 113 views
1

我在頁面上設置了一些使用WordPress的發佈數據的json,然後將該json傳遞給一些JS,這些JS循環並將標記添加到地圖。我非常接近它的工作,只需要弄清楚這最後一部分。嘗試將數組中的值傳遞給Google Maps對象時發生錯誤

我的PHP代碼從一個數組創建JSON:

<script type="text/javascript"> 
var markers = <?php echo json_encode($pageposts);?> 
</script> 

這裏是我的JS代碼: VAR信息窗口= NULL;

$(document).ready(function(){ 
    initialize(); 
    }); 

function initialize() { 

var centerMap = new google.maps.LatLng(41.141208, -73.263726); 
var options = { 
    zoom: 12, 
    center: centerMap, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
} 
var map = new google.maps.Map(document.getElementById('map'), options);  

setMarkers(map, markers); 
    infowindow = new google.maps.InfoWindow({ 
    content: "loading..." 
    }); 
} 

function setMarkers(map, markers) { 
    for (var i = 0; i < markers.length; i++) { 
    var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(markers[i].meta_value), 
    map: map 
}); 

var contentString = "Some content"; 

google.maps.event.addListener(marker, "click", function() { 
//infowindow.setContent(this.html); 
//infowindow.open(map, this); 
}); 

}}

如果你想看到一個頁面,使用JSON嵌入式 - 看看這個鏈接: http://www.fairfieldctguide.com/test-map 視圖出處:http://www.fairfieldctguide.com/test -map

任何幫助將不勝感激! Jake

+0

我看不出有任何的循環。 –

回答

1

google.maps.LatLng需要兩個數字作爲參數。目前您傳遞的字符串會導致錯誤。所以,你需要你的標誌物[I] .metavalue轉換爲兩個數字像這樣:

function setMarkers(map, markers) { 
    for (var i = 0; i < markers.length; i++) { 
    latlng = markers[i].meta_value.split(",") 
    lat = parseFloat(latlng[0]) 
    lng= parseFloat(latlng[1]) 
     var marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(lat, lng), 
      map: map 
     }); 

     var contentString = "Some content"; 

     google.maps.event.addListener(marker, "click", function() { 
      //infowindow.setContent(this.html); 
      //infowindow.open(map, this); 
     }); 
    } 
} 

如果你不想做,你可以只存儲緯度和經度值作爲單獨的屬性數的converson。所以,你的JSON應該是這樣的:

var markers = [{ 
      "ID":"883", 
      "post_title":"Tucker's Cafe", 
      "meta_key":"meta_geo", 
      "lat":41.1674377, 
"lng": -73.2236554 
     } 

,你會添加標記,像這樣:

var marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(markers[i].lat, markers[i].lng), 
      map: map 
     }); 
+0

太棒了!非常感謝! – jrutter

相關問題