1

JavaScript+PHP+MYSQL と Google Maps API v2 マーカーの動的ロードでどのように作成されましたか?

atm 私はマップフォローの例を持っています

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

しかし、私のmarker_data_01.php(すべてのマーカーがリストされている場所->例のコードを見てください)にはatm 4MBがあり、それ以上しかありません。

問題は、このマーカーのみをどのようにロードするかですmarker_data_01.php(他の変更の場合、マップと同じファイルにある可能性がありますが、無意味です。MySQL atm からすべてロードします)。

私が今見ているもの:たとえば
(どの数字が良いのかわかりませんが、これは私が作りたいものを示すためだけに書いているか、それと似たようなものです)

  • たとえば、左上隅には位置があります:10、
  • たとえば、右上隅の位置は 30 です。
  • たとえば、左下隅には位置があります: 5、
  • たとえば、右下隅の位置は 15 です。

-- したがって、このボックス 10-30-5-15 にあるマーカーのみをロードします。

たとえばGETで、

たとえば、マップを 17-12-48-20 ボックスに移動すると、次の GET リクエストが作成され
、この mysql の引用とダウンロードで、現在表示されている次のマーカーが表示されます。

これで私は無制限のマーカーを持つ地図を持つことができます、

クラスタリングでそれらをリンクできるのは、いつ多くのマーカーになるかです。

したがって、この ppl では、すべてのマーカー DB の「プリロード」を行う必要はありません (現在 4 MB のものがあり、それ以上のものがあります)。ただし、現時点で見ているものだけをダウンロードしてください。

多くのサイトがそれを持っているのでそれが可能であることは知っていますが、私はコード言語のマスターではありません.phpとmysql(およびhtml)を少ししか知りません:)

// 私の英語でごめんなさい

4

2 に答える 2

1

Seems to me that you're looking for something like MarkerClusterer

EDIT

I see - I didn't get the original ask very clearly.

What you need to do is send the current lat/lon box to the server, and use those values in your WHERE clause.

Here's a quick example

// 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
}

And then, on the PHP end, assuming your data table has a lat and lng column, something like this

$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
";
于 2010-04-12T16:53:26.923 に答える
0

マーカー マネージャーを使用して、Google マップで何千ものマーカーを管理/表示することはできません。パフォーマンスはひどいものになります。確実にこれを行う唯一の方法は、近接するマーカーをグループ化する MarkerClusterer のようなユーティリティを使用するか、Fusion Tables Layer を使用することです。

個人的にはFusion Tables Layerをお勧めしますが、考慮すべきさまざまなオプションのすべてについて説明している素晴らしい記事がここにあります. https://developers.google.com/maps/articles/toomanymarkers

于 2013-01-15T23:15:20.440 に答える