如果从数据库加载标记的数据,我是否将从db中查询的输出写入javascript文件中,或者是否有更简洁的方法呢?
感谢
答案 0 :(得分:1)
是的,写一个文件是一个很好的方法。只需将数据写为JSON即可。您的文件看起来像:
var map = {waypoints:[...]};
然后你可以这样做:
for(var i=o; i<map.waypoints.length; ++i) {
addWaypoint(map.waypoints[i]);
}
我实际上使用这种方法对节点进行了一些静态缓存:http://www.trailbehind.com/site_media/javascript/gen/national-parks.js
我们经常使用那套国家公园,所以我们对它进行缓存。但是我们也有网址,你可以在那里动态获取节点的JSON,例如:http://www.trailbehind.com/map/node/7538973/632/735/
此网址获取节点7538973的地图,并指定地图的尺寸(以像素为单位)。
答案 1 :(得分:0)
所需的Javascript当然可以包含在您喜欢使用的任何语言中,例如, pymaps获取Python示例。虽然pymaps实际上是将JS代码插入到HTML模板中,但如果您正在编写Web应用程序,则可以选择在适当的URL上即时提供该JS代码并在<script>
标记中使用该URL在你的页面中。
答案 2 :(得分:0)
我同意Andrew的回答(+1)。
我想我要补充的唯一一点是,您可以使用AJAX请求来获取该数据,而不是包含一些服务器端生成的JavaScript。类似的东西:
var request = new Request.JSON (url: 'get_some_json.php',
onSuccess: function(data) {
// do stuff with the data
}).get ();
(这是一个Mootools AJAX的东西,但你可以使用任何类型的AJAX请求对象。)
编辑:ChrisB对解析JSON响应的性能和重新阅读我的答案提出了一个很好的观点我当然没有说清楚。我认为AJAX请求适合根据用户交互生成的参数重新请求数据。我想一个示例用例可能是,用户过滤地图上显示的数据。您可以通过AJAX / SJON请求获取过滤后的数据,而不是重新加载页面。
答案 3 :(得分:0)
根据应用程序的大小,您可能需要考虑打印普通的javascript。
我有一张使用服务器端群集的地图,因此标记会经常更新。我发现解析JSON标记会显着减慢应用程序,而且根本不需要。
如果速度是个问题,我建议删除所有不必要的层(JSON,AJAX等)。如果不是,那么JSON会更好,更清洁。