美文网首页
鹰眼图/概述图实现 ArcGIS API For JavaScr

鹰眼图/概述图实现 ArcGIS API For JavaScr

作者: Yo_5529 | 来源:发表于2020-02-27 11:57 被阅读0次

鹰眼图/概述图实现

bPrbRu

本例展示在3D场景中添加一个2D的鹰眼图/概述图。概述图展示当前所在的3D场景。使用watch()来实现2D概览图和3D场景图的同步。具体案例

有关watching属性的更多信息,可以查看Working with properties

具体实现

  1. 创建一个DIV,用来展示鹰眼图。
<div id="overviewDiv"><div id="extentDiv"></div></div>
  1. 为鹰眼图创建一个Map。
  2. 为鹰眼图创建一个MapView
var overviewMap = new Map({
    basemap: "topo"
})

var mapView = new MapView({
    contrain: "overviewDIV",
    map: overviewMap,
    constraints: {
        rotationEnabled: false
    }
})

// 移除默认的MapVIew自带的控件,具体效果可看文末下面
mapView.ui.components = [];
  1. 创建一个灰色的矩形用来标示当前的位置,并添加到mapview中。
const extent3Dgraphic = new Graphic({
    geometry: null,
    symbol: {
      type: "simple-fill",
      color: [0, 0, 0, 0.5],
      outline: null
    }
  });
  mapView.graphics.add(extent3Dgraphic);
  1. 重点:使用WatchUtils监听MainView的extent属性变化

WatchUtils的用法

watchUtils.init(obj, propertyName, callback)

具体代码

watchUtils.init(mainView, "extent", function(extent) {
// 当3D场景静止的时候,mapView移动到视图的位置
if (mainView.stationary) {
  mapView.goTo({
    center: mainView.center,
    scale:
      mainView.scale *
      2 *
      Math.max(
        mainView.width / mapView.width,
        mainView.height / mapView.height
      )
  });
}

extent3Dgraphic.geometry = extent;
});

其他

mapView.ui.components = []的作用

如图,该语句作用是清空默认的组件

LmJOlG

Scale缩放算式

mainView.scale * 2 *
Math.max(
mainView.width / mapView.width,
mainView.height / mapView.height

mapView.width/height 是指当前显示区域的宽度和高度.

var size = mainView.scale *
Math.max(
mainView.width / mapView.width,
mainView.height / mapView.height

令上面的算式=size,下面两张图是size*1、2的效果。 可见其实size *1的效果已经不错了,但是 *2 效果可以更好。

size * 1

wgFEZq

size * 2

sfffrS

Overview Sample

相关文章

网友评论

      本文标题:鹰眼图/概述图实现 ArcGIS API For JavaScr

      本文链接:https://www.haomeiwen.com/subject/uzjthhtx.html