簡體   English   中英

ol3 ol.proj.transform錯誤的轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM