Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript LatLng在Google Maps API中作为一个分解数组_Javascript_Php_Arrays_Maps - Fatal编程技术网

Javascript LatLng在Google Maps API中作为一个分解数组

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>

我正在从数据库中检索一个LatLng坐标字符串,并使用PHP的explode函数将其存储在一个数组中。我想将数组从PHP传递到JavaScript。另外,我希望多边形函数接受数组并相应地绘制坐标。我现在被难倒了(请帮忙

<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[],您应该能够更新循环。我会在上面快速更新的,是我做的。谢谢你的帮助。:)