一个mysql条目中的多个坐标用于折线谷歌地图

时间:2014-12-20 19:21:28

标签: php google-maps-api-3

您好,我需要知道是否有办法将我从mysql数据库中检索到的坐标分开,以便在google地图上使用折线https://developers.google.com/maps/documentation/javascript/examples/polyline-simple
它们目前存储如下

(x, y)(x, y)(x, y)

由于坐标的数量每次都有所不同,因为它取决于用户记录坐标数据的时间。但是我不知道如何选择坐标以输入代码:

var polyCoordinates = [
    new google.maps.LatLng(x, y),
    new google.maps.LatLng(x, y),
    new google.maps.LatLng(x, y)
  ];

我检索这样的数据

while ($row = mysql_fetch_array($query)) {
    echo "new google.maps.LatLng(" . $row['coordinate'] . "),";
}

1 个答案:

答案 0 :(得分:0)

是的,您需要做的是按特定字符拆分从数据库中获取的字符串。在PHP中,该函数称为explode

首先,您需要从初始字符串中删除一些字符,以便在下一阶段更容易处理。我们想要拿出的是整行的开始(和结束)。这可以通过substrstrlen(返回长度)命令完成,例如

$coordinates = $row['coordinate'];
$coordinates = explode("(", $coordinates)[1];
$coordinates = substr($coordinates, 1, strlen($coordinates) - 2);
// $coordinates is now "x,y)(x,y)(x,y"

现在“爆炸”这个基于字符串“)”(只留下“x,y”对

$pieces = explode(")(", $coordinates);

之后$ pieces是包含以下项目的数组(字符串)

$pieces[0] is "x, y" // First pair
$pieces[1] is "x, y" // Second pair
$pieces[2] is "x, y" // Third pair

既然我们已经拥有了所有这些功能,我们可以通过它们来迭代调用您的初始函数 new google.maps.LatLng(x,y)就像这样

for ($i = 0; $i < strlen($pieces); ++$i) {
    // Here you could also use the $pieces[$i] straight away since it is now always pair like "x,y"
    $coords = explode(",", $pieces[$i]);
    $x = $coords[0];
    $y = $coords[1];
    echo("new google.maps.LatLng(" . $x . "," . $y . ")");
    if ($i + 1 < strlen($pieces)) {// If this isn't last row
        echo(",\n"); // Print comma
    }
}

如果我的回答有问题,请告诉我,多年没写PHP:)