在ArcGIS中无法获得位置、3D成像或方向(方向)。

问题描述 投票:1回答:1

我是arcgis的新手。我想用3D显示一个特定角度的特定位置。这个位置是宾夕法尼亚州McKeesport的Water街和第五大道的拐角处。角度是朝东的。倾斜度是45。但这是我得到的。https:/codepen.iolschneidermanpenZEQEWXG。

我的代码如下。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>ArcGIS JavaScript Tutorials: Create a JavaScript starter app</title>
    <style>
      html, body, #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    </style>
    <link rel="stylesheet" href="https://js.arcgis.com/4.15/esri/themes/light/main.css">
      <script src="https://js.arcgis.com/4.15/"></script>
  </head>
  <body>
    <div id="viewDiv"></div>

    <script>
        require([
              "esri/Map",
              "esri/views/SceneView"
            ], function(Map, SceneView) {

            var map = new Map({
              basemap: "topo-vector",
              ground: "world-elevation"  // show elevation
            });

            var view = new SceneView({
              container: "viewDiv",
              map: map,
                heading: 90,
              camera: {
                position: {  // observation point
                  latitude: '40.350500',
                  longitude: '-79.868870',
                  z: 1000  // altitude in meters
                },
                tilt: 45  // perspective in degrees
              }
            });
          });
    </script>
  </body>
</html>
arcgis-js-api esri-maps sceneview
1个回答
1
投票

确保你设置的标题(角度)的观看方向上的。camera 对象。这将使摄像机向东看,位于交叉口上方。

var view = new SceneView({
  container: "viewDiv",
  map: map,
  camera: {
    position: {
      // observation point
      latitude: "40.350500",
      longitude: "-79.868870",
      z: 700 // altitude in meters// altitude in meters
    },
    heading: 90,
    tilt: 45 // perspective in degrees
  }
});

下面是修改后的CodePen的链接。https:/codepen.ioarnofivapen688eee67141131712a12ccc3310a6ea4?editors=1010。

如果你想让摄像机看向十字路口,你需要通过向东移动摄像机来采用这个位置,例如:。

latitude: "40.350464",
longitude: "-79.874628",

这是另一个版本的CodePen 在摄像机的视野中显示出交叉口的位置https:/codepen.ioarnofivapena2da1acb4cba398721690bf4d0b2101a?editors=0010。


与其手动设置这些值,不如使用 SceneView.goTo() 并将你想让它关注的点作为参数传递。

var view = new SceneView({
  container: "viewDiv",
  map: map
});

view.goTo({
  target: [-79.86887, 40.3505], // coordinates of crossing
  heading: 90,
  tilt: 45,
  zoom: 18 // instead of a z-value, we provide the zoom level
}, {
  duration: 0 // tell view not to animate camera movement
});

这里是CodePen展示了如何使用... ... goTo(): https:/codepen.ioarnofivapene91dd1b257a002a0c4d007d3724e039f?editors=1010。

© www.soinside.com 2019 - 2024. All rights reserved.