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 動的読み込みバー効果のサンプルコード

推薦する

MySQL の一般的な問題とアプリケーション スキルの概要

序文MySQL の日常的な開発やメンテナンスでは、パスワードの紛失やテーブルの破損など、避けられない...

JavaScriptを使用してページ効果を作成する

11. JavaScriptを使用してページ効果を作成する11.1 DOMプログラミングDOM プロ...

MySQL 5.6 zipパッケージのインストールチュートリアルの詳細

これまでは、拡張子が .msi のファイル、つまり、完全なインストールが使用されていました。しかし、...

Node.js パッケージ マネージャー npm の具体的な使用方法

目次目的npm init および package.json ファイルモジュールのインストールと管理モ...

テーブル関連の配置とJavascript操作テーブル、tr、td

適切に機能するテーブル プロパティ設定:コードをコピーコードは次のとおりです。 <テーブル セ...

回転灯効果を実現するWeChatアプレットの例

序文日常の開発では、テキストの水平スクロール効果(一般にカルーセルと呼ばれる)によく遭遇します。これ...

Mysqlの日付と時刻関数を扱う記事

目次序文1. 現在の時刻を取得する1.1 現在の日付と時刻を返す1.2 現在の日付を取得する1.3 ...

HTML における <meta> タグの使用に関する詳細な説明

私たちが作成する Web ページでは、より多くの人々に訪問してもらいたい場合、検索エンジンを使用して...

基本構造、ドキュメント タイプ、ヘッダー、本文などの一般的な HTML 要素の概要。

1. 基本構造:コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBL...

nginx 503 サービスが一時的に利用できない問題を解決する方法

最近、ウェブサイトを更新すると、503 Service Temporarily Unavailabl...

WeChatアプレットに2048ミニゲームを実装する詳細なプロセス

レンダリング サンプルコード今日は、WeChat アプレットを使用して 2048 ゲームを実装します...

MySQL学習エンジンの詳細な説明、説明、権限

エンジン導入InnodbエンジンInnodb エンジンは、データベース ACID トランザクションを...

Vue3を使用してjsで呼び出せるコンポーネントを実装する

目次序文1. 従来のVueコンポーネント1. メインコンポーネントコード: 2. 使用方法3. 成果...

...

WeChatアプレットは左にスワイプしてリスト項目を削除する効果を実現

この記事では、WeChatミニプログラムの具体的なコードを共有し、左にスワイプしてリスト項目を削除す...