[英]OpenLayers-3 ol.proj.transform not working with custom projection
[英]ol3 ol.proj.transform wrong transformation
函數ol.proj.transform()根據用戶輸入返回錯誤的坐標。 為了測試目的,我設置為50.7712078,9.6679688。 當它們通過值傳遞給函數(add_marker(y,x))時,結果為:
1076233.3638212564,-4754497.267923687
但是,當我創建表示與給我的用戶輸入相同的緯度和經度的局部變量時:
1076233.3638212564,6580922.381627579
ol3中的此功能是否有問題?
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; carset=utf-8">
<link rel="stylesheet" href="./_css_II.css" type="text/css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ol3/3.5.0/ol.js" type="text/javascript"></script>
<script src="./_script.js" type="text/javascript"></script>
</head>
<body>
<div id="map" class="map"></div>
<div id="geo-marker" class="marker"></div>
<div id="inputForm">
Latitude:
<input id="latitude" type="text" value="50.7712078"/>//default
Longitude:
<input id="longitude" type="text" value="9.6679688"/>//default
<input id="btn_addmarker" type="button" value="Add Marker" />
</div>
</body>
</html>
_script.js
var map, marker;
$(document).ready(function(){
init_map();
$("#btn_addmarker").on("click",function(){
var lat = $("#latitude").val();
var lon = $("#longitude").val();
add_marker(lon,lat);
});
});
function init_map(){
var OSM = new ol.layer.Tile({
source: new ol.source.OSM()
});
var v_OSM = new ol.View({
center:[2061969,7281059],
zoom: 14
});
var map = new ol.Map({
layers: [OSM],
target: "map",
renderer: "canvas",
view: v_OSM
});
var markerHwnd = document.getElementById("geo-marker");
marker = new ol.Overlay({
position: [2061961,7281059],
positioning: "bottom-center",
offset: [0,0],
element: markerHwnd,
stopEvent: false
});
map.addOverlay(marker);
}
function add_marker(y,x){
var goodLat = 50.7712078;
var goodLon = 9.6679688;
var newCoord = ol.proj.transform([y,x],"EPSG:4326","EPSG:3857");
console.log(newCoord); //[1076233.3638212564, -4754497.267923687] <- Should be: [1076233.3638212564, 6580922.381627579]
/*
var newCoord = ol.proj.transform([goodLon,goodLat],"EPSG:4326","EPSG:3857");
console.log(newCoord);//[1076233.3638212564, 6580922.381627579] <- OK!
*/
marker.setPosition(newCoord);
}
您正在傳遞文本作為參數。 在調用方法使其正確時,顯式地解析參數: add_marker(parseFloat(lon),parseFloat(lat));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.