Ben google harita üzerinde görüntülemek için belirteçlerin sunucu ucunda bazı sınır dayalı kümeleme uygulamak. Ne yapıyorum ben harita hamle veya haritanın bağlı alır ve sırayla sunucu tarafı komut dosyası almak için basit bir sql sorgusu çalıştıran ajax arama yapar büyütülebilir ya da yakınlaştırılmış her denir bir işleve sahip olduğunu belirteçler ve kümeler onları. SO kadar teh kümeleme parçası ancak bazen getBounds hissediyorum doğru sınırlarını gönderme görünmüyor güzel çalışıyor.
Sanki bir harita yan ve aniden tüm işaretleri yok ve harita boş şimdi işaretleri var için kullanılan bölgelerde biraz kaydırmak olabilir. Ben sql sorgu kontrol ve sorgusu kendisinden beklenen olacağını olandan müthiş bir farklı sınırlarını gösterir.
Take a look at the regions below:
Birincisi, tüm işaretlerini göstermektedir.
Aşağıdaki biri ancak sadece üstüne biraz taşındı ve sol ancak yarısı bölge ancak hiçbir işaretleri, hepsi var önceki resimde olduğu gibi aynı oldu. Ben haritaların getBounds fonksiyonu ile olması sorunu izole ettim.
Bu sınırları alır ve çağrı yapar benim javascript kodu:
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var data = {ne:northEast.toUrlValue(), sw:southWest.toUrlValue(), zoom:map.getZoom()};
//something getting messed up in the code above this point
$.ajax({
type: "POST",
url: 'maps/get-markers',
data: {object:$.toJSON(data)},
dataType: 'json',
success: function(response) {
//code to add markers
}
});
Benim sunucu tarafı kodu bu koordinatlara dayalı ürün almak için kullanılan php:
$data = Zend_Json::decode(stripslashes($this->_request->getParam('object')));
//retrieve the variables from the GET vars
list($nelat, $nelng) = explode(',', $data['ne']);
list($swlat, $swlng) = explode(',',$data['sw']);
//clean the data
$nelng = (float)$nelng;
$swlng = (float)$swlng;
$nelat = (float)$nelat;
$swlat = (float)$swlat;
$ubound = $swlng > $nelng ? $swlng : $nelng;
$lbound = $swlng > $nelng ? $nelng : $swlng;
$sql = 'SELECT `a`.* FROM `locations` AS `a` WHERE (a.`longitude` > $lbound) AND (a.`longitude` < $ubound) AND';
$ubound = $swlat > $nelat ? $swlat : $nelat;
$lbound = $swlat > $nelat ? $nelat : $swlat;
$sql .= ' (a.`latitude` >= $lbound) AND (a.`latitude` <= $ubound)';
Ben javascript onun getBounds işlevini şüphelenen ama en kısa zamanda bunu düzeltmek gerekir ediyorum. Herhangi bir fikir lütfen: (