我有一个问题让我头疼了几天,对于那些对json数据有更多了解的人来说,这可能是一个非常简单的解决方案。希望有人可以提供帮助。
首先,我使用的是脚本,但这并不重要,因为我使用的是空白应用程序,我在代码中使用的唯一脚本宏是数据库查找,正如您将看到的那样。
我实际上是从数据库中选择多个字段,使用json将它们放置在Google Maps API的函数中(纬度和经度,名字和姓氏用于描述)。它完美地工作,但是在整个生成的数组中,它会自动在每行的末尾放置一个逗号。我无法理解如何删除它。我已经尝试了 rtrim 和 trim ,但是它们都没有工作,但是如果这有意义的话,它们确实从整个结果的末尾开始取值?
如果这非常简单,请提前道歉!
我的代码如下所示:
$LatLong = array();
$i = 0;
$llresult = '';
sc_lookup(ds,"SELECT latitude,longitude,first_name,surname FROM staff WHERE active=1");
for($i=0;$i<count({ds});$i++){
$LatLong[0][] = "var Marker = new google.maps.Marker({ position: {lat: ". {ds[$i][0]} .", lng: ". {ds[$i][1]} ."}, map: map, title: '". {ds[$i][2]} ." ". {ds[$i][3]} ."' });";
}
//include $result data
$llresult = json_encode($LatLong);
//$result treatment
$llresult = str_replace("[[","", $llresult);
$llresult = str_replace("]]","", $llresult);
$llresult = str_replace('"','', $llresult);
?>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Locations</title>
<style>
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html, body {
height: 90%;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
function initMap() {
var myLatLng = {lat: 37.3320045, lng: -122.0329699};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: myLatLng
});
<?php echo $llresult; ?>
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=APIKEY&callback=initMap">
</script>
</body>
</html>
<?php
我应该补充一点,回显$ llresult的输出显示如下:
var Marker = new google.maps.Marker({position:{lat:37.3320045,lng: -122.0329699},map:map,title:'Joe Bloggs'});, var Marker = new google.maps.Marker({position:{lat:37.3320045,lng:-122.0329699}, 地图:地图,标题:'Jane Doe'});
答案 0 :(得分:3)
划分代码和数据的简单方法是:
$LatLong = array();
$i = 0;
sc_lookup(ds,"SELECT latitude,longitude,first_name,surname FROM staff WHERE active=1");
for($i=0;$i<count({ds});$i++){
$LatLong[] = [
'lat' => $ds[$i][0],
'lng' => $ds[$i][1],
'title' => $ds[$i][2] . " ". $ds[$i][3]
];
}
所以,现在在$LatLong
中,您将存储坐标和标题。现在,到javascript:
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: myLatLng
});
var latLong = <?php echo json_encode($LatLong)?>;
// iterate over latLong and create markers:
for (var key in latLong) {
new google.maps.Marker({
position: {lat: latLong[key]['lat'], lng: latLong[key]['lng']},
map: map,
title: latLong[key]['title']
});
}