我目前可以在地图窗口中放置静态点:
var latlng = new GLatLng(lat, lng);
map.addOverlay(new GMarker(latlng, markerOptions));
而且我知道如何获得窗口的界限。我还可以编写一个页面来获取边界并以任何格式返回其中的点。
我现在遇到的问题:
moveend
事件是否捕获所有移动,包括缩放更改?或者我是否需要单独观看该活动?$.get
请求吗?)答案 0 :(得分:1)
我目前正在做与此类似的事情,以及服务器上的群集。
moveend
将捕获缩放更改。$.get
请求会很有效。我就是这样做的,但你肯定可以用你想要的方法来完成许多方法。
答案 1 :(得分:1)
以下是从谷歌对数据源进行外部调用的一个很好的示例: Google Maps PHP and SQL
如果你只是将点存储在外部javascript文件中,那么我建议使用基于XML的JSON格式,因为谷歌地图使用的XML解析器比json慢得多。
祝你好运!
答案 2 :(得分:1)
我在其中一个网站中使用this。我认为这正是你要找的。但是请注意“gmaps-utility-library”插件有一些错误/错误的代码所以最好重新检查它并仔细检查一切是否正常工作(我没有在标记管理器中遇到任何错误但在某些来自该库的其他插件。)
即使您想自己编码,这也许是一个很好的起点。
修改
我对3-4的回答:
这实际上取决于情况。如果它是静态的(您只需要在地图上管理很多点> 300)那么您可以将所有点与地图所在的页面一起提供(例如,作为JavaScript数组)。如果用户与数据交互,则可能最好使用AJAX。如果你在你的站点中使用jQuery(或任何其他JS库),那么使用该库中的ajax函数,如果没有,那么请使用来自gmaps的函数。这是因为在整个站点中使用相同的AJAX函数而不是使用2执行相同的工作是很好的。
如果您正在使用AJAX路径,则有2个选项:
如果您希望用户想要看到全局或者他想要查看所有/大多数积分,那么请选择选项1 +标记管理器(就像我推荐的那个或您自己的类似)。
如果确实存在很多分数并且用户永远不会对大多数分数感兴趣,那么请选择2 +经理或仅使用这个简单的算法:清除地图 - >地图窗口边界的请求点+ magin /(缓存) - >绘制点 - >重复每次移动/缩放。
从个人经验(我已经使用过两个AJAX选项)标记管理器做得非常好,可以处理很多点,整体用户体验比只为视口加载点更顺畅。请求新点并在地图上绘制它们是相当滞后/不连贯的。当然这取决于积分数量。