В настоящее время у меня есть карта на моем веб-сайте, которая отображает 50 000 маркеров. Они были недоступны для пользователя из-за загромождения, поэтому я реализовал решение для кластеризации с помощью markkerlusterer google. Это работает нормально, но из-за количества маркеров это невероятно медленно загружается.php - Кластерная кластерная сторона сервера
Я хотел бы использовать решение на стороне сервера в форме php, но не могу найти лучший способ сделать это. Это моя текущая настройка
Внешние маркеры-xml.php PHP файла
<?php
$SQL = "SELECT MarkerName, Lat, Lng FROM TableName WHERE MarkerName !=''";
$Query = mysql_query($SQL);
$NumRows = mysql_num_rows($Query);
?>
<markers>
<?php
for($i = 0; $i < $NumRows; $i++)
{
$row = mysql_fetch_assoc($Query);
$Lat = $row['Lat'];
$Lng = $row['Lng'];
$MarkerName = $row['MarkerName'];
echo "<marker Lat='$Lat' Lng='$Lng' MarkerName='$MarkerName'> </marker>\n";
}
?>
</markers>
Главной файл conataining Карты
function initialize(mapvars) {
var xmldata = "markers-xml.php";
downloadUrl(xmldata, function(doc) {
var xml = xmlParse(doc);
var markersInfo = xml.documentElement.getElementsByTagName("marker");
var markers = [];
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < markersInfo.length; i++) {
var Lat = parseFloat(markersInfo[i].getAttribute("Lat"));
var Lng = parseFloat(markersInfo[i].getAttribute("Lng"));
var point = new google.maps.LatLng(Lat,Lng);
var MarkerName = markersInfo[i].getAttribute("MarkerName");
var marker = new google.maps.Marker({
position: point,
map: map,
title: MarkerName,
MarkerName: MarkerName
});
markers.push(marker);
bounds.extend(point);
}
var markerCluster = new MarkerClusterer(map, markers);
}
Пожалуйста, используйте [ 'htmlspecialchars '] (http://php.net/htmlspecialchars) при выводе на HTML, чтобы предотвратить [XSS] (https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29). –
Пожалуйста, не используйте функции 'mysql_ *' больше, они устарели. См. [Почему я не должен использовать функции mysql_ * в PHP?] (Http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) для деталей. Вместо этого вы должны узнать о [подготовленных утверждениях] (http://bobby-tables.com/php.html) и использовать либо [PDO] (http://php.net/pdo), либо [MySQLi] (http: // php.net/mysqli). Если вы не можете решить, какая из них, [эта статья] (http://php.net/manual/en/mysqlinfo.api.choosing.php) поможет вам. Если вы выберете PDO, [вот хороший учебник] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers). –
В настоящее время я должен использовать 'mysql' для этого, но скоро перейду к PDO –