我必须将现有openlayers 2应用程序的地图图块提供程序从OpenStreetMaps更改为Here贴图。为实现这一目标,我尝试实施UsingCustomTiles中描述的类似方法。
现在我不知道如何将我的EPSG:3857坐标(边界)映射到正确的z / x / y平铺地址。在Map Tile API Developer's Guide中有一个计算示例来获取EPSG:4326坐标的正确平铺地址,我认为不需要重新投影我的坐标,因为地图和坐标是投影的mercator。
此外,我不确定在openlayers映射中为maxExtent和maxResolution设置了什么值,也许这就是我的情况下UsingCustomTiles示例失败的原因。
有人可以提供一个提示吗?
答案 0 :(得分:0)
如何使用OpenLayers.Layer.XYZ()方法?以下内容应该有效:
var map = new OpenLayers.Map({
div: "map",
projection: "EPSG:900913",
displayProjection: "EPSG:4326",
numZoomLevels: 21
});
var normalDay = new OpenLayers.Layer.XYZ(
"normal.day",
[
"http://1.maps.nlp.nokia.com/maptile/2.1/maptile/newest/normal.day/${z}/${x}/${y}/256/png8?app_id=" + app_id + "&app_code=" + app_code,
"http://2.maps.nlp.nokia.com/maptile/2.1/maptile/newest/normal.day/${z}/${x}/${y}/256/png8?app_id=" + app_id + "&app_code=" + app_code,
"http://3.maps.nlp.nokia.com/maptile/2.1/maptile/newest/normal.day/${z}/${x}/${y}/256/png8?app_id=" + app_id + "&app_code=" + app_code,
"http://4.maps.nlp.nokia.com/maptile/2.1/maptile/newest/normal.day/${z}/${x}/${y}/256/png8?app_id=" + app_id + "&app_code=" + app_code
], {
attribution: "Tiles © <a href='http://here.com/'>Nokia</a>",
sphericalMercator: true,
wrapDateLine: true,
transitionEffect: "resize",
buffer: 1,
numZoomLevels: 21
}
);
map.addLayers([
normalDay
]);