Vue で SuperMap を使用する練習

Vue で SuperMap を使用する練習

序文

なんというか、ぼんやりしながら電話に出て、ぼんやりしながら臨時の仕事を受けて、ぼんやりしながら出張に行って、数日間ぼんやりしながらSuperMapを操作しました。SuperMapは本当に強力ですが、機能が比較的強力で、機能ポイントが多すぎて、短期間で開発を開始できないため、習得するにはある程度の時間がかかります。さあ!私も初心者ですが、長い間取り組んできた結果、ハイパーグラフを Vue プロジェクトに導入する方法と手順をここで整理し、ハイパーグラフを使用する必要があるものの、将来の方向性が定まっていない初心者の同僚の役に立ちたいと思っています。参考用であり、信頼できません。

関連資料

使用している人やグループが比較的少ないため、インターネット上の情報も少ないかもしれませんが、それでも共有する必要がある Web サイトがいくつかあります。

スーパーマップ公式サイト:シャトルゲート

SuperGraph ケーススタディ: シャトルゲート

スーパーグラフ 3D: シャトルゲート

OpeaLayers: シャトルゲート

これらのウェブサイトでは、対応する情報やAPIインターフェースを確実に見つけることができますが、公式サイトで示されているケースはすべてjsコードです。vueプロジェクトで使用する必要がある場合は、対応するjsコードをvue構文に変換する必要があります。実際、ケースのコードには具体的な紹介がないため、変換時に各コード行の意味を理解する必要はありません。理解したい場合は、APIを個別にクエリする必要がありますが、これは膨大な作業です。今後ゆっくりと勉強することができます。急いでいる場合は、コードブロックを理解するだけで十分です。

Vue プロジェクトが 2 次元ハイパーグラフを導入

次のステップは、2 次元ハイパーグラフを Vue プロジェクトに導入することです。

OpenLayers のドキュメントを例に挙げてみましょう。

このドキュメントでは、さまざまなインポート方法を紹介しています。Vue プロジェクトの場合は、npm インポート メソッドを使用してください。

npm をインストール @supermap/iclient-ol

インストールが完了すると、node_modules フォルダーに supermap フォルダーが作成されます。おめでとうございます。インストールは成功しました。

ここに画像の説明を挿入

インストールが完了したら、index.html ファイルに CSS ファイルを導入します。

<link href='https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.4.3/css/ol.css' rel='スタイルシート' />

<link href='https://iclient.supermap.io/dist/ol/iclient-ol.min.css' rel='スタイルシート' />

これで、SuperMap がプロジェクトに正常に追加されました。

しかし、プロジェクトの ES6 構文を ES5 に変換できるかどうかという問題があります。これには設定が必要になる可能性があり、そうしないと、後のプロジェクトで Hypergraph を使用してデータをロードするときにエラーが報告されます。

webpack.base.conf.js ファイルにスーパーマップ変換を追加します。

{
   テスト: /\.js$/,
   ローダー: 'babel-loader',
   インクルード: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client'), resolve('node_modules/@supermap')]
},

これは問題ないでしょう。2次元は比較的簡単です。簡単な例を見てみましょう。

ハイパーグラフ 2D ケース

引用

まず、ハイパーグラフを使用する必要があるページでいくつかのライブラリを紹介します。

  'ol/Map' から Map をインポートします。
  'ol/View' から View をインポートします。
  'ol/layer/Tile' から TileLayer をインポートします。
  'ol/control' からコントロールとして * をインポートします。
  '@supermap/iclient-ol' から Logo、TileSuperMapRest をインポートします。

これらのライブラリは、公式 Web サイトのドキュメント、つまり OpenLayers API ドキュメントに従って紹介されています。

具体的にどのようなライブラリを導入するかについては、必要に応じて公式 Web サイトからいくつかの例をコピーし、OpenLayers API ドキュメントの例で使用されている対応するライブラリを確認できます。

例えば公式サイトの場合、 var layer = new ol.layer.Tileに変換するときにどのライブラリを導入すればいいかわからないときは、opealayers を見て確認することができます。

ここに画像の説明を挿入

このチェックに似ています。

html

次に、マップを表示するための HTML を記述します。

<div id="マップ"></div>

TS

次に ts コードが来ます。

        var url = "https://iserver.supermap.io/iserver/services/map-world/rest/maps/World";
        this.map = 新しいマップ({
          ターゲット: 'マップ',
          コントロール: control.defaults({ attributionOptions: { collapsed: false } }).extend([new Logo()]),
          ビュー: 新しいビュー({
            中央: [106.86, 39.71],
            // 最大ズーム: 18,
            // 最小ズーム: 2,
            ズーム: 5,
            投影: 'EPSG:4326',
          })
        });
        var レイヤー = 新しい TileLayer({
          ソース: 新しい TileSuperMapRest({
            URL: URL、
            ラップX: 真
          })、
          投影法: 'EPSG:4326'
        });
        レイヤーを追加します。

すると、2次元画像が正常に表示されます。

ここに画像の説明を挿入

他の機能が必要な場合は、公式 Web サイトにアクセスしてケースを確認し、直接使用できますが、js コードを vue 構文に変換する必要があります。

Vue が 3D スーパーグラフを導入

3D は少し難しいので、SuperMap 3D ドキュメントを参照してください。公式サイトでは js を使用しています。vue をインストールするには、時間内にダウンロードできるパッケージが必要です。

パッケージのダウンロード場所

ここに画像の説明を挿入

ダウンロードしたらstaticフォルダに入れます。

ここに画像の説明を挿入

次に、widgets.css、Cesium.js、zlib.min.js ファイルを index.html にインポートします。

<link rel="スタイルシート" href="./static/Cesium/Widgets/widgets.css" rel="外部nofollow" >
<script type="text/javascript" src="./static/Cesium/Cesium.js"></script>
<script type="text/javascript" src="./static/Cesium/Workers/zlib.min.js"></script>

ここに画像の説明を挿入

その後は、何もする必要はありません。SuperMap 3D が必要なインターフェイスに直接書き込むことができます。同様に、テスト用に SuperMap 3D の公式 Web サイトで提供されている 3D ケースを参照することもできます。js コードを vue コードに変換する必要があります。

ここでは、レイヤーを導入するデモをいくつか簡単に紹介します。マップを表示するには、div が必要です。この div の幅と高さを設定することを忘れないでください。そうしないと、表示されない場合があります。覚えておいてください。

<div id="map" style="幅: 100%;高さ: 95%"></div>

次に ts コードです。2 次元のライブラリのようにさまざまなライブラリを導入する必要はなく、直接コードを記述するだけです。

3次元の地球儀を簡単に作成

var ビューア = 新しい Cesium.Viewer('map')

このコード行で3次元の地球儀を表示できれば導入は成功しており問題はないということなので、このまま開発を進めていけます。

ここに画像の説明を挿入

その後、詳細なコードは共有しません。必要な場合は、ケースから変換を見つけてください。

いくつかの一般的なレイヤーを導入する方法を皆さんと共有したいと思います。実際、公式 Web サイトでもそれについて説明しています。私はそれらすべてをテストしたので、直接お見せします。

最初の方法は地形図と画像をインポートすることです

例えば、北京のある場所のGIS情報をインポートしたい場合、Baiduでは平面地図しか見えません。平面地図は2次元なので高さは見えません。しかし、HyperMapが地形図を導入すると、高さなどの地形情報を見ることができます。このとき、あるエリアの地形へのリンクと、このエリアの画像へのリンクが必要です。すると、地形は下にあり、高さがあり、その上に画像地図が敷かれています。これで理解できたと思いますか?コードは次のとおりです。

地形図を追加

var ビューア = 新しい Cesium.Viewer('map', {
    //地形サービスプロバイダーのインスタンスを作成します。URL は SuperMap iServer によって公開された TIN 地形サービスです。terrainProvider: new Cesium.CesiumTerrainProvider({
    url: 'http://localhost:8090/iserver/services/3D-DiXing/rest/realspace/datas/面积_Terrain', // データの下のリンクである地形マップをロードします isSct: true, // 地形サービスは SuperMap iServer から提供されるため、公開時に isSct を true に設定する必要があります
    不可視性: 真
  })、
});

画像を追加する

// 基になる画像を追加 var layer = new Cesium.SuperMapImageryProvider({
    url: 'http://localhost:8090/iserver/services/YingXiang/rest/maps/Image base map' //REST 形式のイメージ サービス アドレス});
var imgLayer = this.viewer.imageryLayers.addImageryProvider(レイヤー)

このようにして、地形と画像が読み込まれます。

次に、カメラの位置、つまり、ロード時に表示される部分を特定できます。そうでない場合は、地球儀が表示され、ズームインして自分で見つける必要があります。

//カメラの視野角を定義するだけです this.scene.camera.setView({
  宛先: Cesium.Cartesian3.fromDegrees(108.19, 40.39, 1000000)
});

次に最初のマップをロードします。

S3Mレイヤーの読み込み

ここでは、このファイル ディレクトリ内のすべての S3M レイヤーがロードされます。必要に応じて、一部のみをロードすることもできます。公式ドキュメントを参照してください。

// 川の S3M レイヤーを追加します。Open は、ファイル パスの下にあるすべてのレイヤー情報をマップにインポートします。var promise = this.scene.open("http://localhost:8090/iserver/services/CJ/rest/CJ");
Cesium.when.all([promise], 関数(レイヤー) {
  let layer = that.scene.layers.find('Yangtze River') // 名前でレイヤーをクエリします。この名前はレイヤー接続に対応する名前であり、自分で付けた名前ではありません。layer.style3D.bottomAltitude = 1150 // マップ上のレイヤーの高さを設定します。必要に応じて設定します。this.viewer.zoomTo(layer); // レイヤーはモデルの位置に配置されます })

公式説明:

ここに画像の説明を挿入

MVT レイヤーの追加

// 草MVTレイヤーを追加 this.mc = {
  url: 'http://localhost:8090/iserver/services/CAODI/rest/maps/CD', //MVT サービス アドレス canvasWidth: 512,
  name: 'Grassland', // レイヤーの名前は、自分の名前ではなく、この接続ビューアに対応するレイヤーの名前です: that.viewer
}
this.McMvtMap = this.scene.addVectorTilesMap(this.mc);

上記のコードにより、MVT レイヤーの追加が完了します。

そして削除がある

this.scene.removeVectorTilesMap(McMvtMap.name);

以上です。あと 1 行コードがあるので、追加した方が良いでしょう。

this.scene.globe.depthTestAgainstTerrain = false;

これで、Vue での SuperMap の使用実践に関するこの記事は終了です。Vue での SuperMap の使用に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • VueはOpenLayersを使用してTiandi MapとAmapを読み込み
  • VueはBaidu Mapsを使用して都市の位置特定を実現
  • VueはAmapを使用して都市の位置特定を実現
  • フロントエンドVueでAmapを使用する方法
  • Vue で Baidu Maps を使用してカスタム オーバーレイ (水の波紋) を追加する方法
  • vue-amapは地図を表示し、住所をマークします
  • vue-openlayers はマップ座標ポップアップボックス効果を実現します
  • Vue を使用して maptalks マップを導入し、集約効果を実現する

<<:  HTML5で見逃せないAPIやヒントのまとめ

>>:  CSS 動的読み込みバー効果のサンプルコード

推薦する

バインドを使用してDNSサーバーを設定する方法

DNS(ドメインネームサーバー)は、ドメイン名とそれに対応する IP アドレスを変換するサーバーです...

CSSレイアウトにおけるフロート属性と位置属性の違い

CSS レイアウト - position プロパティposition 属性は、要素に適用する配置方法...

よく使われるシングルページアプリケーションウェブサイト共有

CSS3お願いしますこのウェブサイトを自分で見て、パラメータを変更し、CSS3効果をオン/オフにする...

Vueのミックスインと継承について詳しく説明します

目次序文ミキシンMixin ノート (重複名)ローカルミックスイングローバル ミックスイン継承するミ...

Tencent Cloud で HTTPS を無料で導入する方法

最近、WeChatアプレットを書いていたとき、WeChatアプレットではすべてのリクエストインターフ...

Intelli Idea で Tomcat 設定が見つからない問題の解決方法

2日前に新しい会社に入社しました。その会社ではIntelli Ideaを使っています。Eclipse...

CSS初心者向けチュートリアル: 背景画像を画面全体に表示する

インターフェース全体に背景画像を表示したい場合は、当然 body に背景を追加することを考えます。コ...

Linuxネットワーク構成ツールの使用

この記事では、RHEL8 のネットワーク サービスとネットワーク構成ツール、およびネットワーク ファ...

Vue フォーム入力バインディング v-model

目次1.vモデル2. プロパティとイベントのバインディング3. フォーム要素のバインディング3.1 ...

MySQL の重複データの処理方法 (防止と削除)

一部の MySQL テーブルには重複レコードが含まれている場合があります。重複データが存在することを...

Nginx は https ウェブサイト構成コード例を実装します

https ベースポート 443。これはキーと呼ばれるものに使用されます。これらのことを理解せずにで...

960 グリッドシステムの基本原理と使用法

もちろん、CSS はフレームワークを必要とするほど高度ではないと考えて、反対の意見を持つ人もたくさん...

DockerにrockerChatをインストールし、チャットルームを設定するための詳細な手順

包括的なドキュメントgithubアドレスhttps://github.com/RocketChat/...

JavaScriptの信頼性の低い未定義

undefined JavaScript では、値が undefined かどうかを判断したい場合は...

MySQL の集計関数 count の使用法とパフォーマンスの最適化テクニック

この記事の環境はWindows 10、MySQLのバージョンは5.7.12-logです1. 基本的な...