微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 ArcGIS 或 Geojson 在本地存储要素图层以访问数据库数据

如何解决使用 ArcGIS 或 Geojson 在本地存储要素图层以访问数据库数据

是否可以仅使用 ArcGIS 中包含的基本信息来存储要素图层,并在单击托管要素时能够引用本地数据?

例如,如果我正在查看托管数据的地图,并且它只有坐标,并且在属性中有一个主参考键(如parcel_id),那么我是否可以像在基本的正常行为中那样单击包裹JavaScript 映射,将parcel_id 用于Ajax 请求,然后从本地数据库提取附加数据并在同一个弹出窗口中显示?我也可以这样编辑数据吗?或者这一切仅适用于仅由 ArcGIS 托管的数据/要素?

话虽如此,对于我要问的问题,走 OpenLayers 之类的路线并使用 Geojson 文件会更好吗?

解决方法

如果您将 FeatureLayer 加载到地图上,您基本上可以创建一个地图点击处理程序来侦听地图上的点击,进行命中测试,并对其点击的任何内容进行一些逻辑处理。不必是 FeatureLayer,如果需要,可以是 GeoJSONLayer。我相信对于任何类型的图层都应该是相同的工作流程。

实际上,点击地图并从要素中获取数据将在视图上设置点击处理程序(MapViewSceneView,无论您使用哪个),然后使用命中测试基于点击的坐标。

效果……

view.on("click",function(event) {
  view.hitTest({x: event.x,y: event.y}).then(function(response) {
    //response.results would hold the features you clicked
    if (response.results.length) {
      const graphic = response.results[0].graphic;
      // do something with the graphic
      const attributes = resposne.results[0].graphic.attributes;
      // do something with the attributes
    }
  });
});

您可以在此处查看我改编自的鼠标悬停事件的类似示例:https://developers.arcgis.com/javascript/latest/sample-code/view-hittest/,其中包含有关在地图上执行命中测试和在文档中返回结果的更多信息:https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#hitTest

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。