Google Maps API v2 - dinamik yük (on binlerce) belirteçleri

2 Cevap php

nasıl JavaScript + PHP + MySQL ve Google Maps belirteçlerin API v2 dinamik yük ile yapılan?

atm Ben örneği takip haritası var

http://googlemapsapi.martinpearman.co.uk/infusions/google_maps_api/basic_page.php?map_id=8

ama benim marker_data_01.php (listelenen tüm belirteçleri nerede -> örnek görünüm kodu) atm 4MB olan ve sadece daha fazla ve daha fazla olacaktır.

Yani soru şu: nasıl yük marker_data_01.php sadece bu belirteçler (bunun diğer bazı modifikasyon, anlamsız haritası, aynı dosya üzerinde olabilir, ben MySQL bankamatikten tüm yük)

what I look now:
so for example (I dont know what number will good but I write this only for show what I wanna made OR JUST something like it), so

  • , 10: örneğin sol üst köşesinde bir konuma sahip
  • , 30: örneğin sağ üst köşesinde bir konuma sahip
  • 5: Örneğin, sol alt köşesinde bir konuma sahip
  • 15: Örneğin sağ alt köşesinde bir konuma sahip.

- Bu yüzden sadece bu kutuda 10-30-5-15 ne olduğunu işaretleme kalemler yük

Örneğin GET ile,

and when I move map for example to 17-12-48-20 box then made next GET request
and with this mysql quote and download next markers that what I see now,

bu ben sınırsız belirteçleri ile harita olabilir,

ve belirteçlerin bir sürü olacak o zaman kümelenme, onları bağlayabilirsiniz

bu nedenle bu PPL Yüklü tüm belirteçlerin DB do "önyükünü" (ne 4mb şimdi ve daha sahip olacak olması) gerekir, ama sadece indirecek onlar şu anda gördüğünüz bu,

Ben bir sürü siteler bunu çünkü mümkün olduğunu biliyorum ama ben biraz PHP ve MySQL (ve html) sadece bilmek, kod DİLLER'de usta değilim :)

Benim ingilizce için / / üzgünüm

2 Cevap

Gibi bir şey arıyorsanız gibi geliyor bana MarkerClusterer

EDIT

Görüyorum - Ben orijinal çok net sormak alamadım.

Yapmanız gereken sunucuya geçerli enlem / boylam kutu göndermek ve WHERE yan bu değerleri kullanmaktır.

Burada hızlı bir örnek

// Create a GMap2 instance
var gmap = new GMap2( document.getElementById( 'map' );

// Do all your setup here, like gmap.setCenter() and such

// Now, load the map data
loadMapFromCurrentBounds( gmap );

// Assign a handler to the "moveend" event
GEvent.addListener( gmap, 'moveend', function()
{
  loadMapFromCurrentBounds( gmap );
});

function loadMapFromCurrentBounds( gmap )
{
  // First, determine the map bounds
  var bounds = gmap.getBounds();

  // Then the points
  var swPoint = bounds.getSouthWest();
  var nePoint = bounds.getNorthEast();

  // Now, each individual coordinate
  var swLat = swPoint.lat();
  var swLng = swPoint.lng();
  var neLat = nePoint.lat();
  var neLng = nePoint.lng();

  // Now, build a query-string to represent this data
  var qs = 'swLat=' + swLat + '&swLng=' + swLng + '&neLat=' + neLat + '&neLng=' + neLng;

  // Now you can use this query-string in your AJAX request  

  // AJAX-stuff here
}

Ve sonra, PHP ucunda, veri tablosu varsayarak bir lat ve lng sütunu, böyle bir şey vardır

$swLat = mysql_real_escape_string( $_GET['swLat'] );
$swLng = mysql_real_escape_string( $_GET['swLng'] );
$neLat = mysql_real_escape_string( $_GET['neLat'] );
$neLng = mysql_real_escape_string( $_GET['neLng'] );

$query = "
SELECT *
  FROM [Table]
 WHERE lat > $swLat
   AND lat < $neLat
   AND lng > $swLng
   AND lng < $neLng
";

Sen performans iğrenç olacak Marker Manager'ı kullanarak google haritalar üzerinde belirteçlerin binlerce görüntülemek / yönetmek mümkün olmayacaktır. Herhangi güvenilirliği ile bunu yapmak için tek yolu MarkerClusterer gibi bir yardımcı program, birbirine yakın gruplar belirteçleri kullanabilirsiniz, ya da bir Fusion Tables Katmanı kullanmaktır.

Ben şahsen, ancak tüm hakkında düşünebilirsiniz farklı seçenekler görüşmeler burada büyük bir writeup var, Fusion Tables Katmanı öneriyoruz. https://developers.google.com/maps/articles/toomanymarkers