从 gps 坐标计算 Esri 地图范围

Calculate Esri map extents from gps coordinates

我在 Esri 地图上添加了一些标记,并希望在所有标记都可见的缩放级别显示地图。我计算了最小和最大经纬度并设置了范围。但它不起作用。 给定坐标 纬度,lon:41.984440,-87.827278 纬度,lon:41.874489,-87.705772

计算的最小值-最大值: x最大值:“-87.827278” xMin:"-87.705772" 最大:“41.984440” yMin:“41.874489” 预期结果:

> EsriSetMapExtent:function(obj)
>     {
>       var extent = new esri.geometry.Extent(obj.xMin, obj.yMin, obj.xMax, obj.yMax);
>       m.esriMap.setExtent(extent);
>     },

xMin和xMax的值是反的,只有X轴,请检查执行计算的函数。如果您更改它们,它将起作用。下面是工作示例

<!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>Simple Map</title>
    <link rel="stylesheet" href="https://js.arcgis.com/3.17/esri/css/esri.css">
    <style>
      html, body, #map {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
    <script src="https://js.arcgis.com/3.17/"></script>
    <script>
      var map;

      require(["esri/map","esri/geometry/Extent", "esri/SpatialReference", "esri/geometry/Point", "esri/symbols/SimpleMarkerSymbol",
  "esri/Color", "esri/graphic", "dojo/domReady!"], function(Map, Extent, SpatialReference, Point, SimpleMarkerSymbol, Color, Graphic) {
        map = new Map("map", {
          basemap: "topo",  //For full list of pre-defined basemaps, navigate to http://arcg.is/1JVo6Wd
          center: [-87.705772, 41.874489], // longitude, latitude
          zoom: 13
        });
        
        map.on('load', function(evt){
          var pt = new Point(-87.705772, 41.874489, new SpatialReference({wkid:4326}))
          var sms = new SimpleMarkerSymbol().setStyle(SimpleMarkerSymbol.STYLE_SQUARE).setColor(
            new Color([255,0,0,0.5]));
          var graphic = new Graphic(pt,sms);
          map.graphics.add(graphic);
          
          pt = new Point(-87.827278, 41.984440, new SpatialReference({wkid:4326}))
          sms = new SimpleMarkerSymbol().setStyle(SimpleMarkerSymbol.STYLE_SQUARE).setColor(
            new Color([0,255,0,0.5]));
          graphic = new Graphic(pt,sms);
          map.graphics.add(graphic);
        })
        
        var extent = new Extent(-87.827278, 41.874489, -87.705772, 41.984440, new SpatialReference({ wkid:4326 }));
        
        map.setExtent(extent, true);
      });
    </script>
  </head>

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

对我有用的解决方案是:

const geoPoint = new Point(Longitude, Latitude);
if (!map.extent.contains(geoPoint)) {
  // point not in view
}