1つ以上の機能をロードする <テンプレート> <div id="map" style="幅: 100vw; 高さ: 100vh"></div> </テンプレート> <スクリプト> "ol/ol.css"をインポートします。 "ol/layer/Tile" から TileLayer をインポートします。 「ol/layer/Vector」から VectorLayer をインポートします。 「ol/source/Vector」から VectorSource をインポートします。 「ol/source/XYZ」からXYZをインポートします。 "ol" から { Map, View, Feature, ol } をインポートします。 "ol/style" から { Style、Stroke、Fill } をインポートします。 "ol/geom" から {Polygon、MultiPolygon } をインポートします。 「@/assets/chengdu.json」から areaGeo をインポートします。 エクスポートデフォルト{ データ() { 戻る { マップ: {}, エリアレイヤー: {}, }; }, マウント() { this.initMap(); //マップを初期化するメソッド this.addArea(areaGeo); //エリア レイヤーを追加するメソッド this.pointMove(); クリックするとフィーチャーが取得されます。 }, メソッド: { ポイント移動() { // ベクター要素上のマウスのスタイルを設定します this.map.on("pointermove", (e) => { const isHover = this.map.hasFeatureAtPixel(e.pixel); this.map.getTargetElement().style.cursor = isHover ? "ポインター" : ""; }); }, クリックによるフィーチャ取得() { this.map.on("クリック", (e) => { フィーチャを this.map.getFeaturesAtPixel(e.pixel); に設定します。 this.map.getView().fit(features[0].getGeometry(), { 期間: 1500、 パディング: [100, 100, 100, 100], }); }); }, /** * エリアを設定 */ エリアを追加します(geo = {}) { Object.keys(geo).length == 0 && geo.features.length == 0 の場合、戻り値は次のようになります。 // レイヤーを設定する this.areaLayer = new VectorLayer({ ソース: 新しい VectorSource({ 特徴: []、 })、 }); //レイヤーを追加します this.map.addLayer(this.areaLayer); features = geo.features; とします。 for (let i in 機能) { areaFeature を {} とします。 if (features[i].geometry.type == "MultiPolygon") { エリアフィーチャ = 新しいフィーチャ({ ジオメトリ: 新しい MultiPolygon(features[i].geometry.coordinates)、 }); } そうでない場合 (features[i].geometry.type == "Polygon") { エリアフィーチャ = 新しいフィーチャ({ ジオメトリ: 新しいポリゴン(features[i].geometry.coordinates)、 }); } エリアフィーチャー.setStyle() 新しいスタイル({ 塗りつぶし: 新しい塗りつぶし({ 色: "#4e98f444" }), ストローク: 新しいストローク({ 幅: 3, 色: [71, 137, 227, 1], })、 }) ); エリアフィーチャーにプロパティを設定します。 this.areaLayer.getSource().addFeature(areaFeature); } }, /** * マップを初期化する */ initMap() { this.map = 新しいマップ({ ターゲット: "マップ"、 レイヤー: 新しいタイルレイヤー({ ソース: 新しいXYZ({ URL: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}", })、 })、 ]、 ビュー: 新しいビュー({ 投影: "EPSG:4326", 中央: [103, 31], ズーム: 7, })、 }); }, }, }; </スクリプト> Vue+Openlayer が geojson を動的にロードする方法についての記事はこれで終わりです。Vue Openlayer が geojson をロードする関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL テーブルにおける非主キー列オーバーフロー監視の詳細な説明
この記事では主に Vue プロジェクトを紹介します。要素の導入を前提として、コンポーネントを 2 回...
この記事の例では、ジグソーパズルゲームを実装するためのJavaScriptの具体的なコードを参考まで...
複数の値を組み合わせて表示これで、図1から図2に示す要件が揃いました。 どうやってやるんですか?次の...
この記事では、CSS を理解し始めたばかりの人を対象に、主に HTML で clearfix と c...
目次前面に書かれた序文ChromeプラグインとはChrome プラグイン開発を学ぶことの意義は何です...
目次1. 観察可能2. 高階関数3. エクスプレスボックスモデル3.1. エクスプレスボックスモデル...
同じサーバーで、Docker を使用して Mysql のマスター スレーブ同期設定をシミュレートしま...
目次序文やることリストやるだけ地図を準備するインスタンスをバックアップ用に保存するタイマーカルーセル...
目次1. LVS 負荷分散2. 負荷分散LVSの基本紹介3. LVSアーキテクチャ3.1 ロードバラ...
カウント(*)成し遂げる1. MyISAM: テーブル内の行の総数をディスク上に保存し、フィルタリン...
オリンピック期間中にIE8ベータ2がリリースされ、英語版のリリースに合わせて中国語版も第一波でリリー...
目次1. 操作要素1.1. 要素コンテンツの変更1.2. innerText と innerHtml...
序文このプロジェクトには、衛星測位用のグラフィックスを含むチャートの要件があり、北半球または南半球の...
この記事では、MySQL データベースでのアカウントの作成、認証、データのエクスポートおよびインポー...
CSS には、一般的には使用されない 2 つの疑似クラス、before と :after があります...