PHPでマーカをクラスタリングする最も速いアルゴリズムは何ですか?サーバサイドクラスタリングGoogleマップマーカ
クラスター関数から必要なものは、プロパティーlat、lng、およびsizeを持つクラスターobjの出力です。
その後、もちろんクラスタ化されていないマーカーが、私はこれのためのPHPコードを見つけることができないようであり、いくつかあるでしょうか?
このような結果をもたらすコードビハインドを探していますか? (または、おそらくより良い実行)。 http://maps.forum.nu/server_side_clusterer/
は、これまで私が試してみた:
function ClusterMarkers($markers,$ZOOM)
{
$this->load->library('firephp');
$singleMarkers = array();
$clusterMarkers = array();
// Minimum distance between markers to be included in a cluster, at diff. zoom levels
$DISTANCE = (10000000 >> $ZOOM);
// Loop until all markers have been compared.
while (count($markers)) {
$marker = array_pop($markers);
$cluster = array();
// Compare against all markers which are left.
foreach ($markers as $key => $target) {
$pixels = abs($marker['lat']-$target['lat']) + abs($marker['lng']-$target['lng']);
$this->firephp->log('pix :'.$pixels);
if ($pixels < $DISTANCE) {
unset($markers[$key]);
$cluster[] = $target;
}
}
// If a marker has been added to cluster, add also the one we were comparing to.
if (count($cluster) > 0) {
$cluster[] = $marker;
$clusterMarkers[] = $cluster;
} else {
$singleMarkers[] = $marker;
}
}
return array('singlemarkers' => $singleMarkers, 'clustermarkers' => $clusterMarkers);
}
私のデータはjsonizedされますが、clustermarkers配列はすべてmarkerdataが含まれている、と私は効果的に単純に緯度を設定する方法を思ったんだけど、lng、およびサイズを再計算しなくても、新しいマーカーが追加されるたびにリソースを保存することができます。
は、あなたがこれまで持っていますか? – diagonalbatman
@Andy Paton - 質問を編集しました - 良い点=) – Jakob
達成しようとしていることを十分に理解していませんが、ネストされたループを含まないように関数を書き直すことができれば、 。 – Robin