OpenLayers LonLat transform
OpenLayers LonLat transform
我想像谷歌地图一样使用十进制Lon和Lat。但我似乎需要在OpenLayers中转换LonLat对象,例如
var map, layer;
function init(){
map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.OSM( "Simple OSM Map");
map.addLayer(layer);
map.setCenter(
new OpenLayers.LonLat(-1.60400390625, 54.07228265560386).transform(
new OpenLayers.Projection("EPSG:4326"),
map.getProjectionObject()
), 6
);
var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);
var size = new OpenLayers.Size(21,25);
var offset = new OpenLayers.Pixel(0,0);
var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png', size, offset);
markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(-1.60400390625, 54.07228265560386).transform(new OpenLayers.Projection("EPSG:4326"),map.getProjectionObject()),icon));
}
每次我放置标记时,位置都需要转换为EPSG:4326。有没有办法告诉地图总是使用这个投影?
是否可以在地图上设置投影,取决于底层使用的服务。据我所知,OSM只在EPSG:90913中提供渲染图块,因此在将坐标添加到地图之前,无法转换坐标。你可以搜索一个在多个投影中提供瓦片的服务,但到目前为止,我还没有看到一个可以免费使用的服务。另一种选择是在所需的投影中渲染自己的瓦片,并通过自己的瓦片服务器提供它们。
假设你有这样一个地图,你可以使用OpenLayers.map.setOptions()来更改投影,如下所示:
map.setOptions({
projection: "EPSG:4326"
});
但您可能还需要设置一些与投影相关的属性,如maxExtent
等。请参阅此问题。
相关文章:
- 将Transform和Instance Variable转换为对象的JavaScript数组
- OpenLayers LonLat transform
- 可以't让browserfy使用babel-plugin-transform类属性
- 使用-webkit transform:scale()缩放图像
- JQuery在类中设置CSS Transform、Translate属性
- 重置transform:rotate(),方法是移除并追加在追加和重绘图表后未显示数据的画布
- 重置transform:rotate()而不调用-webkit transition:style
- jquery 插件与 transform: translateY 冲突
- 如何在d3.js中线性插值transform属性
- javascript d3 selectAll transform to loop
- 如何理解snap.svg中的Transform属性
- 以安全的方式设置nodeJS Transform流的编码
- jquery click position after css zoom / -webkit-transform
- JQuery CSS Transform在Chrome和Firefox中工作,但不能在IE中工作
- `player.animate( [ {transform: "rotate(10)"`?
- Webkit 和 Moz Transform,具体取决于浏览器
- Flask 和 Reactjs 抛出 JSX Transform 错误
- '-moz-transform: scale(2)' 等同于 CSS 'zoom: 2' 吗?
- 如何使用 Transform.multiply4x4 在著名的
- Extract -webkit-transform matrix3d values