나는 마커 미만 5,000이 완벽 작동이 링크 http://www.appelsiini.net/2008/introduction-to-marker-clustering-with-google-maps서버 사이드 마커 클러스터링은 PHP & MongoDB를
의 말씀에 따라 서버 측 마커 클러스터링을 구현했습니다. 그러나 마커가 17,000으로 증가하면 매우 큰 루프가 실행되므로 모든 메모리가 소모됩니다. mongodb를 사용하여 모든 레코드를 lat n 길이로 저장합니다.
클러스터링을 위해 mongodb의 공간 쿼리 기능을 사용할 수 있습니까?
내가 서버 부하마다 사용자가 어떤 도움이 크게 감사합니다
while (count($markers)) {
$marker = array_pop($markers);
$cluster = array();
/* Compare against all markers which are left. */
foreach ($markers as $key => $target) {
$pixels = $this->pixelDistance($marker['lat'], $marker['long'],
$target['lat'], $target['long'],
$zoom);
if ($distance > $pixels && $zoom < 18) {
unset($markers[$key]);
$cluster[] = $target;
}
if (count($cluster) > 0) {
$cluster[] = $marker;
$clustered[] = $cluster;
} else {
$clustered[] = $marker;
}
}
$newarray = array();
foreach($clustered as $key => $cluster) {
$centroid = array('lat' => 0, 'long' => 0, 'count' => 0);
if(isset($cluster[0]) && is_array($cluster[0])){
foreach($cluster as $marker) {
//echo "{$key} =>"; printArray($marker);
//if($key != 10){
$centroid['lat'] += $marker['lat']; // Sum up the Lats
$centroid['long'] += $marker['long']; // Sum up the Lngs
$centroid['count']++;
//}
}
//if($centroid['count'] != 0){
$centroid['lat'] /= $centroid['count']; // Average Lat
$centroid['long'] /= $centroid['count']; // Average Lng
$clustered[$key] = $centroid; // Overwrite the cluster with the single point.
//}
}
}
return $clustered;
을 다음과 같이 지금까지 내가 클러스터링을하고있어지도, 을 드래그 클러스터를 계산하는 매우 작아야하는 방법을 일부입니다. 미리 감사드립니다.
http://www.soak.co.uk/blog/technical/server-side-map-marker-clustering/ 이 링크는 유용하지만 다른 줌 레벨에서 Google지도에 타일을 구현하는 방법입니다. – Robin
내 대답이 업데이트되었습니다. 여기를 읽으십시오 : http : //msdn.microsoft.com/en-us/library/bb259689.aspx. – Bytemain
이 사이트를 참조하십시오 : http://www.middlesexcountyhomesearcher.com/results-map 지도의 다른 지역에서 서로 다른 크기의 오버레이를 어떻게 가지고 있습니까? – Robin