Javascript LatLng在Google Maps API中作为一个分解数组
我正在从数据库中检索一个LatLng坐标字符串,并使用PHP的explode函数将其存储在一个数组中。我想将数组从PHP传递到JavaScript。另外,我希望多边形函数接受数组并相应地绘制坐标。我现在被难倒了(请帮忙Javascript LatLng在Google Maps API中作为一个分解数组,javascript,php,arrays,maps,Javascript,Php,Arrays,Maps,我正在从数据库中检索一个LatLng坐标字符串,并使用PHP的explode函数将其存储在一个数组中。我想将数组从PHP传递到JavaScript。另外,我希望多边形函数接受数组并相应地绘制坐标。我现在被难倒了(请帮忙 <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzZfro&sensor=false"> </script>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzZfro&sensor=false">
</script>
<script>
function initialize() {
var myLatLng = new google.maps.LatLng(8.5000,125.8333);
var myOptions = {
zoom: 8,
center: myLatLng,
};
var map = new google.maps.Map(document.getElementById("map-canvas"),
myOptions);
var davaoCoordinates = [
new google.maps.LatLng(7.0644,125.6078),
new google.maps.LatLng(8.4833,124.6500),
new google.maps.LatLng(8.5000,125.8333)
];
var davaoCity = new google.maps.Polygon({
path: davaoCoordinates,
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2
});
davaoCity.setMap(map);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
函数初始化(){
var mylatng=new google.maps.LatLng(8.5000125.8333);
变量myOptions={
缩放:8,
中心:myLatLng,
};
var map=new google.maps.map(document.getElementById(“地图画布”),
肌肽);
var Davao坐标=[
新google.maps.LatLng(7.0644125.6078),
新google.maps.LatLng(8.4833124.6500),
新google.maps.LatLng(8.5000125.8333)
];
var davaoCity=新建google.maps.Polygon({
路径:达沃坐标,
strokeColor:#FF0000“,
笔划不透明度:1.0,
冲程重量:2
});
达沃市setMap(地图);
}
google.maps.event.addDomListener(窗口“加载”,初始化);
以下是PHP代码:
<?php
$connect = mysql_connect("localhost", "root", "");
mysql_select_db('capdb');
if (mysqli_connect_errno()){
echo "Failed to connect to database: " . mysqli_connect_error();
}
$query ="SELECT cap_info.event, cap_info.sendername, cap_info.urgency, cap_area.polygon
FROM cap_info
INNER JOIN cap_area ON cap_info.capid = cap_area.capid
WHERE cap_info.capid =1";
$result = mysql_query($query);
if (!$result){
echo "Query Error." . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0){
echo "No rows found, nothing to print.";
exit;
}
while ($row = mysql_fetch_array($result)){
$event = $row['event'];
$sender = $row['sendername'];
$urgency = $row['urgency'];
$polygon = $row['polygon']."\n";
}
$coordsArray = explode (" ", $polygon);
$count = sizeof($coordsArray);
//$n=0;
//while ($n < $count){
//echo $coordsArray[$n];
//$n++;
//}
?>
不确定数组的外观,但在php中,只需使用以下内容为多边形创建点即可。这至少可以帮助您找到正确的方向
$poly = "";
// loop all values
foreach($array as $v) {
$poly .= "new google.maps.LatLng(".$v."),\n";
}
// add first item from array to close poly
$poly .= "new google.maps.LatLng(".$array[0].")";
然后,在javascript中,只需在需要的地方回显值
var map = new google.maps.Map(document.getElementById("map-canvas"),myOptions);
var davaoCoordinates = [
<?php echo $poly; ?>
];
var-map=new google.maps.map(document.getElementById(“地图画布”),myOptions);
var Davao坐标=[
];
一个提示:不要使用mysql\u connect如果你想让javascript加载一组坐标,那么你的PHP可以返回JSON。只要使用JSON\u encode返回它。如果你只想在页面加载时创建点,那么mjayt应该适合你。谢谢!:)coordsArray只是一个简单的一维数组。数据库中的坐标字段只是将其存储为varchar。我使用空格“”作为分隔符,以满足分解函数的需要。由此可知:“7.0644125.6078 8.4833124.6500 8.5000125.8333”。它变成了:7.0644125.6078 8.4833124.6500 8.5000125.8333,基本上是coordsArray[],您应该能够更新循环。我会在上面快速更新的,是我做的。谢谢你的帮助。:)