php - 谷歌地图 API v2 - 动态加载(数万个)标记

标签 php javascript google-maps google-maps-api-2

如何用JavaScript+PHP+MYSQL和Google Maps API v2制作动态加载标记?

atm我有 map 跟随示例

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(对其进行其他一些修改,可以与 map 位于同一文件上,毫无意义,我从MySQL atm加载它)

我现在的样子:
所以对于例子(我不知道什么数字会好,但我写这个只是为了展示我想做的东西或者只是类似的东西),所以

  • 例如左上角的位置:10,
  • 例如右上角的位置:30,
  • 例如左下角的位置:5,
  • 例如右下角的位置:15。

-- 因此仅加载此标记,此框中的内容为 10-30-5-15

例如 GET,

当我将 map 移动到 17-12-48-20 框时,然后发出下一个 GET 请求
并使用这个 mysql 引用并下载我现在看到的下一个标记,

有了这个我就可以拥有带有无限标记的 map ,

什么时候会有很多标记,然后聚类可以将它们链接起来,

因此,有了这个 ppl,就不需要“预加载”所有标记数据库(现在有 4mb,将来还会有更多),而只需下载他们目前看到的内容,

我知道这是可能的,因为很多网站都有它,但我不是代码语言的大师,我只知道一点 php 和 mysql (和 html):)

//对不起我的英语

最佳答案

在我看来,您正在寻找类似 MarkerClusterer 的内容

编辑

我明白了 - 我没有很清楚地理解最初的问题。

您需要做的是将当前的纬度/经度框发送到服务器,并在 WHERE 子句中使用这些值。

这是一个简单的示例

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

然后,在 PHP 端,假设您的数据表有一个 latlng 列,如下所示

$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
";

关于php - 谷歌地图 API v2 - 动态加载(数万个)标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2623742/

相关文章:

c# - asp.net 网络表单中的 mysql_fetch_array

javascript - 如何通过 RequireJS/AMD 将我的 TypeScript 代码公开给我的 JavaScript 代码?

javascript - 未捕获的类型错误 : Cannot read property 'ajax' of undefined When I'm trying to send data to url

android - 扩展 ActionBarActivity 的另一个 Activity 中的 Map Fragment 膨胀错误

php - 错误导入 CSV 文件 Crontab

php - domDocument - 识别 <br/> 的位置

javascript - 如何允许layout.pack()大小在d3中自由形式?

google-maps - Google map : Given a point, 如何查找给定旅行时间的所有点?

javascript - 相当于 gmaps api 3 中的 getBoundsZoomLevel()

php - 在 CakePHP 中清理数据/SQL 注入(inject)