繁体   English   中英

LatLng作为Google Maps API中的分解数组

[英]LatLng as an exploded array in Google Maps API

我正在从数据库中检索一串LatLng坐标,并使用了PHP的explode函数并将其存储在数组中。 我想将数组从PHP传递到JavaScript。 另外,我希望Polygon函数接受数组并相应地绘制坐标。 我目前很困惑。 :( 请帮忙。

<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>

这是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; ?>
];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM