序文:Openlayer は、私たちの GIS でよく使用されているオープンソース ソフトウェアであり、非常に良いフィードバックを受けています。以前の ol3 と同様に、大流行しました。マップの実装も非常にシンプルで実用的です。現在、vue で使用されているマップはたくさんあります。では、vue に openlayer を導入して、マップの分散効果、またはさらに深いマップの集約効果を実現したらどうなるでしょうか。この記事では、vue でのマップの実装を共有します。現在、openlayer の5 シリーズと 6.5 はユニバーサルであり、テスト済みで利用可能です。 結果:1.重合効果:2. 散布効果:具体的な実装手順:1. プロジェクトにOpenLayerを導入する
2. 構成(必要に応じて導入)(1)新しいvueファイルを作成する (2)テンプレート
(3)js部分 関連する設定ファイルをインポートします。これが私のインポートすべてです。状況に応じて削除できます。 "ol/ol.css"をインポートします。 「ol/View」からViewをインポートします。 「ol/Map」からマップをインポートします。 "ol/layer/Tile" から TileLayer をインポートします。 「ol/Overlay」からOverlayをインポートします。 「ol/source/XYZ」からXYZをインポートします。 "ol/source" から { Vector を SourceVec 、Cluster として } インポートします。 "ol"から{Feature}をインポートします。 "ol/layer" から、Vector を LayerVec として、Vector を VectorLayer としてインポートします。 "ol/geom" から { Point, LineString } をインポートします。 輸入 { スタイル、 アイコン、 埋める、 脳卒中、 文章、 CircleStyle として Circle、 } から "ol/style" へ; "ol/source" から { OSM、TileArcGISRest } をインポートします。 3. 地図表示を実現するマウント: マウント() { このメソッドは、次のとおりです。 }, 方法: ここでは 2 つのマップ テンプレートを提供しています。どちらもオンラインです。イントラネットの場合は、独自のアドレスに置き換えてください。 initMap(){ // マップをレンダリングする varlayers = [ //濃い青の背景 new TileLayer({ ソース: 新しいXYZ({ URL: "https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}", })、 })、 // 背景を初期化 // new TileLayer({ // ソース: new OSM(), // })、 ]; this.map = 新しいマップ({ レイヤー: レイヤー、 ターゲット: "マップ"、 ビュー: 新しいビュー({ 投影: 'EPSG:4326', 中央: [120, 30], ズーム: 10, 最小ズーム: 5, 最大ズーム: 14 })、 }); //クリックすると現在の座標が表示されます this.map.on( "クリック"、 関数 (evt) { アラート(evt.coordinate[0] + ";" + evt.coordinate[1]); }, 地図 ); } 4. 散水機能マウント: マウント() { このメソッドは、次のとおりです。 }, 方法: initMap(){ // マップをレンダリングする varlayers = [ //濃い青の背景// new TileLayer({ // ソース: new XYZ({ // URL: // "https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}", // })、 // })、 //背景を初期化する new TileLayer({ ソース: 新しい OSM()、 })、 ]; this.map = 新しいマップ({ レイヤー: レイヤー、 ターゲット: "マップ"、 ビュー: 新しいビュー({ 投影: 'EPSG:4326', 中央: [120, 30], ズーム: 10, 最小ズーム: 5, 最大ズーム: 14 })、 }); //クリックすると現在の座標が表示されます this.map.on( "クリック"、 関数 (evt) { アラート(evt.coordinate[0] + ";" + evt.coordinate[1]); }, 地図 ); //ここでは固定データポイントを記述しているので、アドレスをレンダリングした後で this.addMarker() を直接呼び出すことができます。 }, マーカーを追加します(){ //描画ボードを作成します。let sourceArr = new SourceVec({}); //ランダムデータを定義します。ここでは200個のランダムデータです。for (var i = 1; i <= 200; i++) { //ポイントの座標情報 let coordinates = [120.00 + Math.random(), 30.00 + Math.random()]; feature = new Feature(新しい Point(座標)) とします。 マーカースタイル = 新しいスタイル({ 画像: 新しいアイコン({ 不透明度: 0.75、 ソース: this.fixedStationImg1, })、 }) 機能.setStyle(マーカースタイル) ソースArr.addFeature(機能); } //LayerVec /VectorLayer どちらもOK var layer = new VectorLayer({ 出典: sourceArr、 }) //マップに描画ボードを追加する this.map.addLayer( 層 ); } 5. 集約効果マウント: マウント() { このメソッドは、次のとおりです。 }, 方法: initMap(){ // マップをレンダリングする varlayers = [ //濃い青の背景// new TileLayer({ // ソース: new XYZ({ // URL: // "https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}", // })、 // })、 //背景を初期化する new TileLayer({ ソース: 新しい OSM()、 })、 ]; this.map = 新しいマップ({ レイヤー: レイヤー、 ターゲット: "マップ"、 ビュー: 新しいビュー({ 投影: 'EPSG:4326', 中央: [120, 30], ズーム: 10, 最小ズーム: 5, 最大ズーム: 14 })、 }); //クリックすると現在の座標が表示されます this.map.on( "クリック"、 関数 (evt) { アラート(evt.coordinate[0] + ";" + evt.coordinate[1]); }, 地図 ); //ここでは固定データポイントを記述しているので、アドレスをレンダリングした後で this.addMarker() を直接呼び出すことができます。 }, マーカーを追加します(){ //描画ボードを作成します。let sourceArr = new SourceVec({}); //ランダムデータを定義します。ここでは200個のランダムデータです。for (var i = 1; i <= 200; i++) { //ポイントの座標情報 let coordinates = [120.00 + Math.random(), 30.00 + Math.random()]; feature = new Feature(新しい Point(座標)) とします。 markerStyle = new Style({ 画像: 新しいアイコン({ 不透明度: 0.75、 ソース: this.fixedStationImg1, })、 }) 機能.setStyle(マーカースタイル) ソースArr.addFeature(機能); } //マップに追加レイヤー - 集約ポイント - LayerVec / VectorLayer どちらもOK var layer = new LayerVec({ ソース: this.ClusterSource、 スタイル: 関数 (機能、解像度) { var size = feature.get('features').length; //集約数が1の場合、つまり最下層が配置アイコンの場合 if (size == 1) { 新しいスタイルを返す({ 画像: 新しいアイコン({ アンカー: [0.5, 1], src: require("../../assets/Img/marker_yes.png"), }) }) }それ以外 { //ここで集計部分のスタイルを設定します return new Style({ イメージ: 新しい CircleStyle({ 半径: 30, ストローク: 新しいストローク({ 色: 「白」 })、 塗りつぶし: 新しい塗りつぶし({ 色: '青' }) })、 テキスト: 新しいテキスト({ テキスト: size.toString(), 塗りつぶし: 新しい塗りつぶし({ 色: 「白」 }) }) }) } } }) //マップに描画ボードを追加する this.map.addLayer( 層 ); } 参考文献: js で openlayer を使用する: https://blog.csdn.net/HerryDong/article/details/110951955 これで、マップ集約と散乱効果を実現するための vue+openlayer に関するこの記事は終了です。より関連性の高い vue openlayer マップ集約コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Docker コンテナ アプリケーションで避けるべき 10 の悪い習慣
>>: MySql の 4 つのトランザクション分離レベルについて簡単に説明します。
目次序文1. 公式サイトからMySQLをダウンロードする2. 解凍ファイルを設定する3. 初期化4....
目次文字列の長さ: 長さcharAt() charCodeAt()文字列に値が含まれているかどうかを...
この記事は主にSQLシリアル番号取得コード例を紹介します。記事ではサンプルコードを詳細に紹介しており...
最近、cronスケジュールタスク用のdockerを作りたいと思っており、Dockerfileで次のよ...
目次1. $(".box1").click() メソッドを実装する2. $(&q...
これまでの仕事では、開発サーバーは一般的にTomcatでした。データソースは、多くの場合、appli...
textarea 入力領域でテキストを折り返す場合は、<br/> と入力すると <...
今日はフロートのクリアについてお話します。フロートのクリアについてお話する前に、フロートとは何かを理...
コンポーネントに背景画像コントロールを追加するには、次の 2 つの手順だけが必要です。 <表示...
目次序文Viteプロジェクトを作成する改修プロジェクトディレクトリの規則その他の構成序文毎日鳩、火ば...
<br />オリジナルURL: http://www.lxdong.com/post/m...
目次vuex 永続性要約するvuex 永続性vuex: ブラウザを更新すると、vuexの状態は初期状...
説明: ブロック要素に表示されるテキストの行数を制限します。 -webkit-line-clamp ...
1. 既存のnginxがipv6をサポートしているかどうかを確認する既存の nginx が ipv6...
最近、プロジェクトは環境を切り替え、WebLogic を Tomcat に置き換えました。途中で発生...