Openlayers缩放到自定义地图
我正在研究将OpenLayers用于web应用程序。基本上OpenStreetMap或Google Maps的放大不够,所以我想实现的是,当您放大到最大级别并再次单击“缩放”时,将加载自定义地图图像 如果这是不可能的,那么另一种选择是做一个覆盖,它只会出现在最大的缩放级别上,一旦单击,它们就会进入另一个地图,可能是基于SVG的Openlayers缩放到自定义地图,openlayers,Openlayers,我正在研究将OpenLayers用于web应用程序。基本上OpenStreetMap或Google Maps的放大不够,所以我想实现的是,当您放大到最大级别并再次单击“缩放”时,将加载自定义地图图像 如果这是不可能的,那么另一种选择是做一个覆盖,它只会出现在最大的缩放级别上,一旦单击,它们就会进入另一个地图,可能是基于SVG的 其中哪一个更可行?欢迎任何反馈 我相信这是可以做到的,但配置起来很棘手 您可以使用Mapnik渲染自己的openstreetmap分幅。因为它基于矢量源,所以可以进一步放
其中哪一个更可行?欢迎任何反馈 我相信这是可以做到的,但配置起来很棘手 您可以使用Mapnik渲染自己的openstreetmap分幅。因为它基于矢量源,所以可以进一步放大 或者,您可以添加向量层(这将成为SVG或VML)或静态图像层,并仅在足够高的缩放级别上使其可见。但是,由于您的基础层是OSM或Google Maps,因此地图的放大范围不能超过基础层的最大缩放级别 您可以做的是覆盖默认的OpenLayers.Layer.OSM层,将最大缩放级别设置得更高(),停止以更高的缩放级别获取OSM磁贴图像,并添加自定义行为(从您自己的服务器加载磁贴,或使用矢量层选项)。您必须覆盖类层次结构中某个位置的正确方法(
OpenLayers.Layer.OSM
extendsOpenLayers.Layer.XYZ
extendsOpenLayers.Layer.Grid
等)
OpenLayers.Layer.MyOSMLayer = OpenLayers.Class(OpenLayers.Layer.OSM, {
initialize: function(name, options) {
options = OpenLayers.Util.extend({
numZoomLevels: 19 + 4,
}, options);
var newArguments = [name, url, options];
OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
},
// @override from XYZ
getURL: function (bounds) {
var xyz = this.getXYZ(bounds);
if ( xyz.z > 19 ) { // override url on higher zoomlevel
return "http://myserver/white.png";
}
// else default behaviour: super.getUrl()
return OpenLayers.Layer.OSM.prototype.getURL.apply(this, [bounds]);
},
CLASS_NAME: "OpenLayers.Layer.MyOSMLayer"
})