2012-08-14 5 views
8

Ich versuche, das geographische Koordinatensystem in Esri Webmercator zu konvertieren, aber wenn ich die Konvertierung mache, haben die resultierenden x und y Werte von 0000003232112222 ... und 00000012665321 .... Dies ist sehr seltsam seit Koordinaten, da diese nicht existieren.Umwandlung von geographischem WGS 84 nach 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

Die erste Koordinate sieht fast wie eine Quadtree-Dekomposition aus, die zweite hingegen nicht (Ziffern größer als 3). Vielleicht nur Zufall. – John

+0

würde die räumliche Referenz Hilfe zuweisen? (https://developers.arcgis.com/javascript/jsapi/point-amd.html). Für die Zeile var g = new esri.geometry.Point ... –

+0

Was sind die genauen Eingaben für Ihre X- und Y-Werte, die in das Positionsarray gesendet werden? Bitte geben Sie das genaue Format und den Datentyp dieser Werte an. Idealerweise fügen Sie Code ein, der die fest codierten x- und y-Werte in Ihrem Beispiel festlegt, damit der Problemcode von anderen ausgeführt werden kann. – Fitz

Antwort

0

Sie nicht wirklich haben die latitide/Länge konvertieren Punkte zu einem basemap hinzuzufügen, die in webmercator ist.

Sie können den Punkt direkt mit Breiten-/Längengrad (und die API wird intern die Umwandlung von geografischen zu Webmercator tun) auf verschiedene Arten erstellen. Dies ist seit der Version 3.3 (Januar 2013) verfügbar.

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

sollten Sie versuchen, geographicToWebMercator Methode in esri/geometry/webMercatorUtils der detaillierten documentation module.see.

 //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 + ")"); 

eine Live-Demo:

<!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>

Hoffe, dass es Ihnen helfen könnte.

+0

Ich verwende den AMD-Stil von Arcgis Api für Javascript. Wie für Legacy-Stil ist der Hauptcode ähnlich. @ Pavlo – YinchaoOnline