CoordinateConversion widget - Custom Formats

Explore in the sandboxView live

This sample demonstrates how to add a custom format to the Coordinate Conversion widget. In the sample, two custom formats are added:

  1. A format representing a WGS84 point, with the addition of a z-value in meters.
  2. A format representing a NAD 1983 HARN StatePlane California I point, described by wkid 102241.

The Scene View in this sample is clipped to an extent where the StatePlane California I spatial reference is useful.

User defined custom formats need to define a convert function and a reverse convert function or a Spatial Reference and a reverse convert function. If a SpatialReference is provided, a convert function is not required; the Geometry Service will be used to project as needed.

                                                     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Regular expression to find a number
const numberSearchPattern = /-?\d+[\.]?\d*/;

const newFormat = new Format({
  // The format's name should be unique with respect to other formats used by the widget
  name: "XYZ",
  conversionInfo: {
    // Define a convert function
    // Point -> Position
    convert: function(point) {
      const returnPoint = point.spatialReference.isWGS84
        ? point
        : webMercatorUtils.webMercatorToGeographic(point);
      const x = returnPoint.x.toFixed(4);
      const y = returnPoint.y.toFixed(4);
      const z = returnPoint.z.toFixed(4);
      return {
        location: returnPoint,
        coordinate: `${x}, ${y}, ${z}`
      };
    },
    // Define a reverse convert function
    // String -> Point
    reverseConvert: function(string) {
      const parts = string.split(",");
      return new Point({
        x: parseFloat(parts[0]),
        y: parseFloat(parts[1]),
        z: parseFloat(parts[2]),
        spatialReference: { wkid: 4326 }
      });
    }
  },
  // Define each segment of the coordinate
  coordinateSegments: [
    {
      alias: "X",
      description: "Longitude",
      searchPattern: numberSearchPattern
    },
    {
      alias: "Y",
      description: "Latitude",
      searchPattern: numberSearchPattern
    },
    {
      alias: "Z",
      description: "Elevation",
      searchPattern: numberSearchPattern
    }
  ],
  defaultPattern: "X°, Y°, Z"
});

Additional resources

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.