[英]OpenLayers LonLat transform
我想像Google Maps一樣使用十進制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:900913中提供其渲染的圖塊,因此在將坐標添加到地圖之前沒有辦法進行變換。 您可以搜索一種服務,該服務以多種投影方式提供其圖塊,但到目前為止,我還沒有看到可以免費使用的一種服務。 一種替代方法是在所需的投影中渲染您自己的圖塊,然后通過您自己的圖塊服務器提供它們。
假設您有這樣一張地圖,可以使用OpenLayers.Map.setOptions()更改投影,如下所示:
map.setOptions({
projection: "EPSG:4326"
});
但是您可能還需要設置一些與投影有關的屬性,例如maxExtent
等。請參maxExtent
問題 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.