目前,我有一个页面显示由JavaScript生成的3个Google地图,这些地图基于一个硬编码到JavaScript中的地理编码。
我现在已经在XML文件中设置了地理编码,并使用PHP函数将地理编码从XML调用到数组中。但我不确定如何将这个从数组解析为JavaScript。
这是我的JavaScript。
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js? sensor=true&libraries=places"></script>
<script type="text/javascript">
function initMap(mapObj, lat, lng) {
var latLng = new google.maps.LatLng(lat, lng);
var mapInstance = new google.maps.Map(mapObj, {
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: latLng,
zoom: 11
});
var infowindow = new google.maps.InfoWindow();
var service = new google.maps.places.PlacesService(mapInstance);
function createMarker (place) {
var marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
map: mapInstance,
position: place.geometry.location
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(place.name);
infowindow.open(mapInstance, this);
});
}
function searchCallback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i]);
}
}
}
service.search({ location: latLng, radius: 5000 }, searchCallback);
}
function initialize() {
var ndx = 0;
function calInitMap(lat, lng) {
initMap(document.getElementById('map'+ndx), lat, lng);
ndx++;
}
calInitMap(51.5069999695, -0.142489999533);
calInitMap(40.79445,-74.01558);
calInitMap(48.858001709, 2.29460000992);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<noscript>JavaScript not detected! Verify that JavaScript support is enabled in your browser, or upgrade to a newer JavaScript-capable web browser and try again.</noscript>
<div id="map0" style="position:absolute; width: 290px; height: 300px;"></div>
<div id="map1" style="position:absolute; left:492px; width: 288px; height: 300px;"></div>
<div id="map2" style="position:absolute; left:788px; width: 290px; height: 300px;"></div>
这是我用来从XML文件中调用地理编码的PHP函数。
function getGeocode() {
try {
$xml = new SimpleXmlElement(file_get_contents('config/cityConfig.xml'));
} catch (Exception $e) {
echo 'Caught exception: An error has occured. Unable to get cityConfig.xml';
}
$geoSource = array();
foreach ($xml->city as $city) {
$geo = (string) $city->geocode;
array_push($geoSource, $geo);
}
return $geoSource;
}
?>
我考虑过使用calInitMap($geocodeSource[0]);
,或者使用JavaScript函数访问XML文件会更好吗?有什么建议吗?
答案 0 :(得分:0)
不是使用php来解析XML,为什么不使用$ .xmlToJSON之类的东西将它全部保存在JavaScript中:http://www.terracoder.com/index.php/xml-objectifier/xml-objectifier-documentation
$.get('/config/cityConfig.xml', function( data ){
var json = $.xmlToJSON( data );
// Do things with JSON here...
});
如果jQuery不是你的游戏,你可能想尝试这个脚本:http://www.thomasfrank.se/xml_to_json.html
答案 1 :(得分:0)
您可以将数组存储为JS中的变量:
var geocodes=<?php echo json_encode(getGeocode());?>
......不需要在JS端进行解析。