Несколько координат из одной записи MySQL для использования в полилинии Google Maps

Привет! Мне нужно знать, есть ли способ отделить координаты, которые я извлек из базы данных MySQL, чтобы использовать их на полилиниях Google Maps. 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

Решение

Да, вам нужно разделить строку, полученную из базы данных, на определенные символы. В PHP эта функция называется взрываться.

Итак, сначала вам нужно удалить некоторые символы из начальной строки, чтобы на следующем этапе их было проще обрабатывать. То, что мы хотим вынести, это начало (и конец) всего ряда. Это может быть сделано с зиЬзЬг а также 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);

после этого $ parts — массив, содержащий следующие элементы (строки)

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

Теперь, когда у нас есть все это, мы можем перебрать их, чтобы вызвать вашу начальную функцию новый 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 годами 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]