2012-08-14 22 views
8

Tôi đang cố chuyển đổi hệ tọa độ địa lý thành Esri Webmercator, nhưng khi chuyển đổi kết quả x và y có giá trị là 0000003232112222… và 00000012665321…. Điều này rất kỳ quặc vì các tọa độ là những tọa độ không tồn tại.Chuyển đổi WGS địa lý 84 sang Web Mercator 102100

var positions = []; 
positions.push(x, y); 

var g = new esri.geometry.Point(positions); 
g = esri.geometry.geographicToWebMercator(g); 
x = g.x; 
y = g.y; 
+0

Tọa độ đầu tiên gần như trông giống như một phân tách quadtree, nhưng tọa độ thứ hai không (chữ số lớn hơn 3). Có lẽ chỉ là trùng hợp ngẫu nhiên. – John

+0

sẽ chỉ định trợ giúp tham chiếu không gian? (https://developers.arcgis.com/javascript/jsapi/point-amd.html). Đối với dòng var g = new esri.geometry.Point ... –

+0

Đầu vào chính xác cho các giá trị x và y của bạn được gửi vào mảng vị trí là gì? Vui lòng bao gồm định dạng chính xác và loại dữ liệu của các giá trị này. Lý tưởng nhất, bao gồm mã thực sự đặt các giá trị x và y được mã hóa cứng trong mẫu của bạn để mã vấn đề có thể được thực hiện bởi những người khác. – Fitz

Trả lời

0

Bạn không thực sự phải chuyển đổi vĩ độ/kinh độ để thêm điểm vào sơ đồ nền trong webmercator.

Bạn có thể tạo điểm trực tiếp bằng cách sử dụng vĩ độ/kinh độ (và API sẽ chuyển nội bộ từ chuyển đổi địa lý sang webmercator) theo một vài cách khác nhau. Tính năng này có sẵn kể từ phiên bản 3.3 (tháng 1 năm 2013).

var point = new Point(-98, 38); // note that longitude(x) comes before the latitude(y). 

// or as an array 
var point = new Point([-98, 38]); 

// or as an object 
var point = new Point({latitude: 38, longitude: -98}); 

https://developers.arcgis.com/javascript/3/jsapi/point-amd.html#point4

0

Bạn nên cố gắng geographicToWebMercator phương pháp trong esri/geometry/webMercatorUtils module.see các chi tiết documentation.

 //a point in GCS_WGS_1984(wkid is 4326) 
     var point = new Point(-118.15, 33.80, new SpatialReference({ 
      wkid: 4326 
     })); 

     var pointWebMercator = webMercatorUtils.geographicToWebMercator(point); 

     alert("the point in 102100 is (" + pointWebMercator.x + "," + pointWebMercator.y + ")"); 

một bản demo trực tiếp:

<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no" /> 
 
    <title>Converting geographic WGS 84 to Web Mercator 102100</title> 
 
    <link rel="stylesheet" href="https://js.arcgis.com/3.20/esri/css/esri.css"> 
 
    <style> 
 
     html, 
 
     body, 
 
     #map { 
 
      height: 100%; 
 
      margin: 0; 
 
      padding: 0; 
 
     } 
 
    </style> 
 
    <script src="https://js.arcgis.com/3.20/"></script> 
 
    <script> 
 
     var map; 
 

 
     require(["esri/map", "esri/geometry/Point", "esri/SpatialReference", "esri/geometry/webMercatorUtils", "dojo/domReady!"], function (Map, Point, SpatialReference, webMercatorUtils) { 
 
      map = new Map("map", { 
 
       basemap: "topo", //For full list of pre-defined basemaps, navigate to http://arcg.is/1JVo6Wd 
 
       center: [-122.45, 37.75], // longitude, latitude 
 
       zoom: 13 
 
      }); 
 

 
      //a point in GCS_WGS_1984(wkid is 4326) 
 
      var point = new Point(-118.15, 33.80, new SpatialReference({ 
 
       wkid: 4326 
 
      })); 
 

 
      var pointWebMercator = webMercatorUtils.geographicToWebMercator(point); 
 

 
      alert("the point in 102100 is (" + pointWebMercator.x + "," + pointWebMercator.y + ")"); 
 
     }); 
 
    </script> 
 
</head> 
 

 
<body> 
 
    <div id="map"></div> 
 
</body> 
 

 
</html>

Hy vọng nó có thể giúp bạn.

+0

Tôi đang sử dụng phong cách AMD của arcgis api cho javascript.As cho phong cách cũ, mã chính là tương tự. @Pavlo – YinchaoOnline