【问题标题】:Calculate Esri map extents from gps coordinates根据 gps 坐标计算 Esri 地图范围
【发布时间】:2016-12-31 14:52:51
【问题描述】:

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

计算的最小值-最大值: xMax:"-87.827278" xMin:"-87.705772" yMax:"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);
>     },

【问题讨论】:

    标签: esri arcgis-js-api


    【解决方案1】:

    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>

    【讨论】:

      【解决方案2】:

      对我有用的解决方案是:

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

      【讨论】:

        猜你喜欢
        • 2017-01-15
        • 2018-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-06
        • 2011-07-20
        • 2023-01-13
        相关资源
        最近更新 更多