缓存基于视口的地理查询

Posted

技术标签:

【中文标题】缓存基于视口的地理查询【英文标题】:Caching view-port based Geo-queries 【发布时间】:2010-04-23 11:17:24 【问题描述】:

我有一个网络应用程序,里面有一张巨大的谷歌地图。当用户在地图上平移和缩放时,点会通过 AJAX 调用动态加载,其中包括视口边界(NE 和 SW 角坐标)和一些其他各种参数。

如何缓存这些积分请求?问题是参数是高度可变的并且(最差的)不是离散的,即带有很多小数位的浮点数。我正在使用 ASP.NET-MVC/C#/LINQ2SQL/SQL-Server,但问题与该平台无关。

这是相关方法的签名:

[AcceptVerbs(HttpVerbs.Post)]
public JsonResult Data(string date, string categories,
    string ne_lat, string ne_lng,
    string sw_lat, string sw_lng)

【问题讨论】:

【参考方案1】:

您可能以错误的方式处理此问题。尝试将图层加载为 GGeoXML(或 KML),而不是作为标记的自定义请求,然后 Google API 将处理要显示的点和缓存。

    var myLatlng = new google.maps.LatLng(49.496675,-102.65625);
    var myOptions = 
      zoom: 4,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    var georssLayer = new google.maps.KmlLayer('http://api.flickr.com/services/feeds/geo/?g=322338@N20〈=en-us&format=feed-georss');
georssLayer.setMap(map);

见http://code.google.com/apis/maps/documentation/v3/examples/layer-georss.html

如果您需要刷新您的积分,请在 URL 的末尾添加一个(假的或时间戳)参数

http://myhost.com/file.kml?rand=1

【讨论】:

以上是关于缓存基于视口的地理查询的主要内容,如果未能解决你的问题,请参考以下文章

基于并行下载算法和动态缓存池的高性能WebGIS数据存取与显示关键技术研究

RedisRedis 的缓存使用技巧(商户查询缓存)

RedisRedis 的缓存使用技巧(商户查询缓存)

RedisRedis 的缓存使用技巧(商户查询缓存)

28springboot——缓存之JSR107——基于注解的缓存使用②

基于数据库实现通用异步缓存系统