如何用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(其中列出了所有标记 - >查看示例代码)的大小为4MB,只有更多,更多。
所以问题是:如何仅将此标记加载到marker_data_01.php
(对其进行一些其他修改,可以与map相同的文件,无意义,我从MySQL atm加载它)
我现在的样子:
所以对于示例(我不知道哪个数字会好,但我只是为了展示我想做的东西或者只是喜欢它而写的),所以
- 所以只加载此标记10-30-5-15中的标记
例如GET,
当我将地图移动到例如17-12-48-20框时,然后发出下一个GET请求
并使用这个mysql引用并下载我现在看到的下一个标记,
有了这个,我可以拥有无限标记的地图,
什么时候会有很多标记,然后聚类可以链接它们,
所以有了这个ppl,不需要对所有标记DB进行“预加载”(现在有4mb并且会有更多),但只下载他们目前看到的内容,
我知道这是可能的,因为很多网站都有它,但我不是代码langs的主人,我知道只有一点php和mysql(和html):)
//对不起我的英文
答案 0 :(得分:1)
在我看来,您正在寻找类似MarkerClusterer
的内容我知道 - 我没有清楚地得到原来的问题。
您需要做的是将当前的lat / lon框发送到服务器,并在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端,假设您的数据表有lat
和lng
列,就像这样
$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
";
答案 1 :(得分:0)
您将无法使用Marker Manager在Google地图上管理/显示数千个标记,性能将非常糟糕。任何可靠性的唯一方法是使用像MarkerClusterer这样的实用程序,它将标记组合在一起,或者使用Fusion Tables Layer。
我个人会推荐Fusion Tables Layer,但是这里有一篇很棒的文章,介绍了你可能想要考虑的所有不同选项。 https://developers.google.com/maps/articles/toomanymarkers