ARCGIS API 加载WKT(terraformers工具的使用)

需求场景:从接口获得WKT格式数据,在前端通过ARCGIS JS API呈现到页面。
ARCGIS JS API 无法直接使用WKT格式数据,但通过terraformers工具的转换后可以使用。terraformers是Esri的一个开源项目,参考:https://github.com/Esri/Terraformer,主要作用是可以将wkt转换为geometry。
在这里插入图片描述
直接上代码,为了测试方便,接口数据用测试数据替代,其他引用的模块和地图都来自互联网,复制可直接运行。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <!-- import CSS -->
  <link rel="stylesheet" href="https://js.arcgis.com/3.26/esri/css/esri.css">
  <style>
      html,
      body,
      #map {
        height: 100%;
        width: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
</head>
<body>
  <input type="button" value="" onclick="getMap('point')">
  <input type="button" value="线" onclick="getMap('polyline')">
  <input type="button" value="" onclick="getMap('polygon')">
  <!-- 地图区域 -->
  <div id="map"></div>
</body>
  <script src="https://unpkg.com/terraformer@1.0.8"></script>
  <script src="https://unpkg.com/terraformer-arcgis-parser@1.0.5"></script>
  <script src="https://unpkg.com/terraformer-wkt-parser@1.1.2"></script>
  <script src="https://js.arcgis.com/3.26/"></script>
  <script>
    var map, getMap;
    require([
      "esri/map",
      "esri/layers/ArcGISTiledMapServiceLayer",
      "esri/geometry/Extent",
      "esri/layers/GraphicsLayer",
      "esri/graphic",
      "esri/geometry/Point",
      "esri/geometry/jsonUtils",
      "esri/symbols/SimpleMarkerSymbol",
      "esri/symbols/SimpleLineSymbol",
      "esri/symbols/SimpleFillSymbol",
      "esri/Color",
      "dojo/domReady!"
    ], function(
      Map,
      ArcGISTiledMapServiceLayer,
      Extent,
      GraphicsLayer,
      Graphic,
      Point,
      geometryJsonUtils,
      SimpleMarkerSymbol,
      SimpleLineSymbol,
      SimpleFillSymbol,
      Color
  ) {
    //地图范围
    var mapExtent = new Extent({
      xmax: 113.799760210539,
      xmin: 106.57095767482662,
      ymax: 20.459116202966324,
      ymin: 18.27952992162579,
      spatialReference: {
        wkid: 4326
      }
    })
   
    map = new Map("map", {
      extent: mapExtent,
      sliderStyle: "small",
      logo: false,
    });
 
    map.on('load', function () {
       map.hideZoomSlider()
       map.hidePanArrows()
    })
 
    //arcgis 在线切片底图
    var myTileLayer = new ArcGISTiledMapServiceLayer("http://cache1.arcgisonline.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer", {
      visible: true
    });
    map.addLayer(myTileLayer)

    //绘制图层
    var ghLayer = new GraphicsLayer();
    map.addLayer(ghLayer);

    //WKT格式测试数据
    var wktData = [
      "POINT(110.7692 19.7441)",
      "LINESTRING(110.4025 19.2101,109.9402 18.5681)",
      "POLYGON((110.4235 19.8364,109.7155 19.8026,108.8381 18.9952,109.4193 18.3927))"]

    getMap = function(geoType) {
      var primitive = null
      var symbol = null
      switch (geoType) {
        case "point":
          primitive = Terraformer.WKT.parse(wktData[0]);
          symbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 12,new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,new Color([255,0,0]), 1),new Color([0,0,255,255]))
          break;
        case "polyline":
          primitive = Terraformer.WKT.parse(wktData[1]);
          symbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,new Color([255,0,0]), 2)
          break;
        case "polygon":
          primitive = Terraformer.WKT.parse(wktData[2]);
          symbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,new Color([255,0,0]), 2),new Color([255,255,0,0.25]))
          break;
      }
      var arcgis = Terraformer.ArcGIS.convert(primitive)
      var geometry = geometryJsonUtils.fromJson(arcgis)
      console.log(geometry)
      var gh = new Graphic(geometry,symbol)
      ghLayer.add(gh)
    }    
  })
  </script>
</html>

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在ArcGIS API加载高德地图作为底图,需要按以下步骤操作: 1. 获取高德地图的服务URL。可以通过高德地图开放平台提供的API或其他方法获取到高德地图的服务URL。 2. 在ArcGIS API的地图对象中添加图层。首先,创建一个新的ArcGIS地图对象,并将高德地图的服务URL作为底图添加到地图中。 ```javascript var map = new Map({ basemap: { baseLayers: [ new TileLayer({ portalItem: { id: { // 高德地图的服务URL // 例如:http://webrd0{subDomain}.is.autonavi.com/appmaptile?style=6&x={col}&y={row}&z={level} // "{level}" 表示缩放级别, "{col}" 表示列号, "{row}" 表示行号, "{subDomain}" 表示服务器子域 // 要根据高德地图的服务URL的具体格式进行替换 source: "<高德地图的服务URL>" } } }) ] } }); ``` 3. 创建视图对象并将地图对象附加到视图中。将地图对象设置为视图的地图属性,然后将视图附加到指定的DOM元素上。 ```javascript var view = new MapView({ container: "viewDiv", // 将视图附加到具有指定ID的DOM元素上 map: map // 设置视图的地图为之前创建的地图对象 }); ``` 通过以上步骤,就可以在ArcGIS API中成功加载高德地图作为底图了。可以根据具体需求进行其他配置和样式的设定,例如放大倍数、中心点、缩放范围等。 ### 回答2: 要加载高德地图作为ArcGIS API的底图,需要按照以下步骤进行操作。 首先,打开ArcGIS API for JavaScript官方网站,并下载最新的API版本。安装完成后,将它引入到你的项目中。 接下来,你需要在你的HTML文件中创建一个容器,用于显示地图。可以使用div元素,并设置其宽度和高度。 在你的JavaScript代码中,首先创建一个地图对象。使用arcgis对象中的Map类可以实现这一功能。在创建地图对象时,需要指定地图容器的ID以及其他的可选参数,如初始缩放级别和初始中心点。 接下来,你需要创建一个底图图层对象,并将其添加到地图对象中。使用arcgis对象中的TileLayer类可以加载高德地图服务作为底图。在创建底图图层对象时,需要指定该服务的URL。 最后,将地图对象添加到地图容器中,并显示地图。使用arcgis对象中的MapView类可以实现这一功能。在创建MapView对象时,需要指定地图对象、地图容器对象以及其他的可选参数,如初始视图范围。 加载高德地图作为ArcGIS API的底图需要使用合适的API版本,创建地图对象、底图图层对象和视图对象,并将它们按照正确的顺序进行添加和显示。通过以上步骤,你可以成功加载高德地图作为ArcGIS API的底图。 ### 回答3: 要将高德地图作为ArcGIS API的底图,可以按照以下步骤进行: 1. 首先,在ArcGIS API的官方文档中找到相关的代码示例或文档,这些示例和文档将指导你如何加载外部地图服务。 2. 打开ArcGIS API的开发环境,创建一个新的HTML文件。 3. 在HTML文件中,引入ArcGIS APIJavaScript文件,并对其进行初始化。 4. 在JavaScript代码中,创建一个地图对象,并指定地图的初始显示范围、放大级别等。 5. 使用ArcGIS API提供的图层对象,加载高德地图的服务URL作为底图图层。 6. 设置地图对象的底图图层为加载的高德地图图层。 7. 运行或部署该HTML文件,以查看加载的高德地图作为ArcGIS API的底图的效果。 需要注意的是,使用高德地图作为ArcGIS API的底图需要确保高德地图服务的URL和相关访问秘钥是有效的,并且遵循高德地图和ArcGIS API使用协议和限制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值