您好,我需要知道是否有办法将我从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'] . "),";
}
答案 0 :(得分:0)
是的,您需要做的是按特定字符拆分从数据库中获取的字符串。在PHP中,该函数称为explode。
首先,您需要从初始字符串中删除一些字符,以便在下一阶段更容易处理。我们想要拿出的是整行的开始(和结束)。这可以通过substr和strlen(返回长度)命令完成,例如
$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:)