国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
事前作業(yè)
サンプル モジュール
模塊的引入
右鍵菜單
完整代碼
ホームページ ウェブフロントエンド Vue.js vue3 で Amap API を使用する方法について話しましょう

vue3 で Amap API を使用する方法について話しましょう

Mar 09, 2023 pm 07:22 PM
フロントエンド vue.js データの視覚化

Amap を使用したとき、公式は多くのケース、デモ を推奨しましたが、これらのケースはすべてネイティブ メソッドを使用してアクセスし、vue を提供しませんでした。または、多くの人がそれについて書いていますreactdemovue2 のインターネットへのアクセスこの記事を見てみましょう vue3 の一般的な使用方法Gaode マップ api を使用しました。皆さんのお役に立てれば幸いです。

vue3 で Amap API を使用する方法について話しましょう

事前作業(yè)

開発前に理解する必要がありますvue3 中アクセスから高アクセスドイツ地図のいくつかの手順

  • 最初にパッケージをインストールして導(dǎo)入します
npm i @amap/amap-jsapi-loader --save
import AMapLoader from '@amap/amap-jsapi-loader'

vue3 で Amap API を使用する方法について話しましょうvue2vue3 の追加には違いがあります。ここでは vue3 を使用します。ここの vue3 のメソッドはまだオプションであり、結(jié)合されていません。私が自分で書いたときは、結(jié)合型と統(tǒng)合された ts を使用しました。後で完全な を公開します。 .vue ファイルでは、タイプがまだ完了していないため、ラベルの ts が削除され、後で完了した後に変更がポストされます。 shallowRef を使用する理由 公式からも説明がありました。 [関連する推奨事項(xiàng): vuejs ビデオ チュートリアル 、Web フロントエンド開発 ]

サンプル モジュール

こちら以前に作成したマップ ビジネス要件のビジネス ロジックをフレームワークを使用せずに直接 HTML ファイルに導(dǎo)入しました。下のリンクをクリックして表示できます:
Amap jsApi の使用
Gaode マップ jsApi の點(diǎn)と線の設(shè)定
Gaode マップ jsApi の右クリック設(shè)定
Gaode マップ jsApi の新しい點(diǎn)の位置
Amap jsApi 凡例
vue3 を使用する場(chǎng)合、インスタンス化メソッド、this 問題、および挿入を追加します。文字列テンプレートを使用する場(chǎng)合、イベントの応答方法を変更する必要がありますが、それでも非常に面倒です

模塊的引入

  • 首先導(dǎo)入的方式,和官網(wǎng)一樣,后面我會(huì)貼完整代碼, 這里我們使用 plugins 加載插件, 其他配置如 Loca, 直接進(jìn)行配置, 這里需要注意版本問題, 寫成 ‘2.0’ 是不行的,初始化函數(shù)在 onmounted 生命周期中執(zhí)行。
  • AMap存儲(chǔ) 這里我做了很多存儲(chǔ),大家知道 .value 的語法是 vue3 獲取 ref 的語法,我下面使用到的 都是ref,后面完整代碼可以查看, 這里掛載的時(shí)候直接存一下,因?yàn)楹芏喙ぞ叻椒ǘ紩?huì)只用到他,這里后期業(yè)務(wù)邏輯我會(huì)抽離到 pinia中去,所以不需要在初始化函數(shù)中寫全部的業(yè)務(wù)邏輯。
  • 模版樣式不生效問題, 我們?cè)谑褂玫臅r(shí)候, 就像我之前寫的文章,點(diǎn)位新增的時(shí)候,我們會(huì)插入 content 字符串模版,替換點(diǎn)樣式,這里有兩種方案修改樣式,一種是 插入 DOM ,不使用字符串,然后在 DOM 上通過 style 直接修改樣式,另一種就是使用模版的時(shí)候直接給 class 類名,但是這種樣式如果我們給 vuestyle 加了 scoped 就不會(huì)生效,這里大家可以自己靈活選擇用哪種,我這里暫時(shí)先使用模版的方式,去掉了 scoped。
  • 圖例, 圖例這里除了導(dǎo)入的時(shí)候,需要配置一下,使用上來說變化不大,樣式的修改還是復(fù)用了我之前的邏輯。
import AMapLoader from '@amap/amap-jsapi-loader'

const initMap = () => {
  AMapLoader.load({
    key: 'b59c490f61a694b9d7576dd864f74d6e', // 申請(qǐng)好的Web端開發(fā)者Key,首次調(diào)用 load 時(shí)必填
    version: '2.0', // 指定要加載的 JSAPI 的版本,缺省時(shí)默認(rèn)為 1.4.15
    plugins: ['AMap.Scale', 'AMap.ToolBar', 'AMap.MouseTool'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
    Loca:{
      version:'2.0.0'
    }
  })
    .then((res) => {      
      AMap.value = res
      // 上來就顯示的中心點(diǎn)  北京 116.397, 39.918
      var lnglat = new res.LngLat(105, 38)
      map.value = new res.Map('container', {
        //設(shè)置地圖容器id
        viewMode: '3D', //是否為3D地圖模式
        zoom: 5, //初始化地圖級(jí)別
        center: lnglat, //初始化地圖中心點(diǎn)位置
      })
      map.value.clearMap() // 清除地圖覆蓋物
      // 地圖是否可拖拽和縮放
      map.value.setStatus({
        dragEnable: true, // 是否可拖拽
        zoomEnable: true, // 是否可縮放
      })

      initWindow()
      // 添加一些分布不均的點(diǎn)到地圖上,地圖上添加三個(gè)點(diǎn)標(biāo)記,作為參照
      coordData.forEach(function (marker) {
        setMarker(marker)
      })

      let renderLine = setLine(coordData)
      // 設(shè)置線
      let polyline = renderLine.reduce((prev, item, index) => {
        let weight = item.type === 1 ? 5 : 3
        let color = item.type === 1 ? headColors[0] : headColors[1]
        prev.push(setLines(item.current, color, weight))
        return prev
      }, [])
      map.value.add([...polyline]) // 繪制線
      //創(chuàng)建右鍵菜單
      menuInstance.value = new ContextMenu(map.value)
      let loca = new Loca.Container({
          map:map.value,
      });
      window._loca = loca;

      // 圖例, 圖例可以實(shí)例化多個(gè),使用定位來設(shè)置位置
      let lengend = new Loca.Legend({
          loca: loca,
          title: {
              label: '管道類型',
              fontColor: 'rgba(255,255,255,1)',
              fontSize: '16px'
          },
          style: {
              backgroundColor: 'rgba(255,255,255,0.2)',
              left: '20px',
              bottom: '40px',
              fontSize: '12px'
          },
          dataMap: [
              { label: '省級(jí)管道', color: headColors[1] },
              { label: '縣級(jí)管道', color: headColors[0] },
          ],
      });

      //修改圖例排列方式
      document.getElementsByClassName("amap-loca loca-controls")[0].setAttribute('id', 'testid')
        var lis = document.querySelectorAll("#testid li");
        for (var i = 0; i < lis.length; i++) {
          console.log(lis[i]);
          lis[i].setAttribute("class", 'test'
          );
      }
    })
    .catch((e) => {
      console.log('error', e)
    })
}
onMounted(() => {
  initMap()
})

右鍵菜單

右鍵菜單, 右鍵菜單這里官方給我們的示例是使用一個(gè) 函數(shù) 進(jìn)行實(shí)例化,里面使用了 this, 所以這個(gè)我單獨(dú)拿出來,首先我們看一下官方的 demo

vue3 で Amap API を使用する方法について話しましょう

  • 這里使用了一個(gè)函數(shù),但這個(gè)函數(shù)還不是類,但是他卻在里面使用了this,實(shí)話來講,這種寫法確實(shí)不是很優(yōu)秀,可擴(kuò)展性很差,不夠健壯,但沒辦法,誰讓我們用了人家的東西呢是吧, 在 vue3 中這么用就不可以了,首先 vue3 里面使用 this 就不是官方建議的, 另外這里面還修改了函數(shù)原型上的方法,其實(shí)我得代碼里面一共有兩種右鍵菜單,如下:

vue3 で Amap API を使用する方法について話しましょう

vue3 で Amap API を使用する方法について話しましょう
一種是在指定點(diǎn)位上打開,另一種是在非點(diǎn)位的空白處打開,指定點(diǎn)位處打開的其實(shí)叫信息窗體,只不過是通過右鍵的方式觸發(fā),那個(gè)沒有上面這個(gè)右鍵菜單麻煩。

  • 首先來說 this 問題, 這里的 this 實(shí)際上就是把我們的實(shí)例化對(duì)象掛載到上面而已,vue3 中沒辦法像 vue2 那樣使用 this, 但也提供給我們了 api 來獲取當(dāng)前組件的實(shí)例化對(duì)象, 然后我沒用使用函數(shù), 使用了一個(gè)類,類構(gòu)造這個(gè)方法, 模版也不適用字符串模版,因?yàn)檫@里字符串模版的事件綁定寫死了,我們使用 DOM 來動(dòng)態(tài)綁定事件,代碼如下:
const { ctx } = getCurrentInstance()
const _this = ctx
//自定義菜單類
class ContextMenu {
  constructor(map) {
    var me = _this
    //地圖中添加鼠標(biāo)工具M(jìn)ouseTool插件
    _this.mouseTool = new AMap.value.MouseTool(map)
    _this.contextMenuPositon = null
    const fragment = document.createElement(&#39;div&#39;) // 使用 DOM 方式, 方便添加事件
    fragment.className = &#39;info context_menu&#39;
    const p = document.createElement(&#39;p&#39;)
    p.addEventListener(&#39;click&#39;, this.delMarkerMenu)
    p.textContent = &#39;移除上次選中信息&#39;
    fragment.appendChild(p)
    //通過content自定義右鍵菜單內(nèi)容
    _this.contextMenu = new AMap.value.ContextMenu({
      isCustom: true,
      content: fragment,
    })
    //地圖綁定鼠標(biāo)右擊事件——彈出右鍵菜單
    map.on(&#39;rightclick&#39;, function (e) {
      me.contextMenu.open(map, e.lnglat)
      me.contextMenuPositon = e.lnglat //右鍵菜單位置
    })
  }
  delMarkerMenu() {
    // 右鍵菜單上次選中點(diǎn)的信息
    clearPoint()
    _this.mouseTool.close()
    _this.contextMenu.close()
  }
}

完整代碼




  • 這里的業(yè)務(wù)邏輯還不完善, 輸入部分的交互邏輯沒有完成, 這個(gè)文件直接引入自己的項(xiàng)目,安裝一下上面說過的依賴, 就可以使用,不過這里數(shù)據(jù)源需要自己根據(jù)自己的數(shù)據(jù)來構(gòu)造就可以了,我引入的事 data 中的一組假數(shù)據(jù),在這里給大家兩組看一下
export const coordData = [
  {
    name: &#39;黑龍江&#39;,
    position: [127, 47],
    pointData: {
      out: 100,
      provide: 10,
    },
    line: [
      {
        current: [
          [127, 47],
          [126, 43],
        ],
        type: 1,
      },
    ],
  },
  {
    name: &#39;吉林&#39;,
    position: [126, 43],
    pointData: {
      out: 120,
      provide: 11,
    },
    line: [
      {
        current: [
          [126, 43],
          [113, 41],
        ],
        type: 1,
      },
    ],
  },
 ]
  • 后面我會(huì)把業(yè)務(wù)邏輯抽離到 pinia 中, 并且完善ts類型, 大家對(duì)哪一部分有疑問或者更好的解決方案可以留言一起學(xué)習(xí)~

(學(xué)習(xí)視頻分享:vuejs入門教程、編程基礎(chǔ)視頻

以上がvue3 で Amap API を使用する方法について話しましょうの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ Mar 16, 2024 pm 12:09 PM

PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ 今日のインターネットの急速な発展の時(shí)代において、フロントエンド開発はますます重要になっています。 Web サイトやアプリケーションのエクスペリエンスに対するユーザーの要求がますます高まっているため、フロントエンド開発者は、より効率的で柔軟なツールを使用して、応答性の高いインタラクティブなインターフェイスを作成する必要があります。フロントエンド開発の分野における 2 つの重要なテクノロジーである PHP と Vue.js は、組み合わせることで完璧なツールと見なされます。この記事では、PHP と Vue の組み合わせと、読者がこれら 2 つをよりよく理解し、適用できるようにするための詳細(xì)なコード例について説明します。

Graphviz チュートリアル: 直感的なデータ視覚化の作成 Graphviz チュートリアル: 直感的なデータ視覚化の作成 Apr 07, 2024 pm 10:00 PM

Graphviz は、チャートやグラフの描畫に使用できるオープン ソース ツールキットで、DOT 言語を使用してチャート構(gòu)造を指定します。 Graphviz をインストールすると、DOT 言語を使用して、ナレッジ グラフの描畫などのグラフを作成できるようになります。グラフを生成した後、Graphviz の強(qiáng)力な機(jī)能を使用してデータを視覚化し、理解しやすさを向上させることができます。

Go 言語のフロントエンド テクノロジーの探求: フロントエンド開発の新しいビジョン Go 言語のフロントエンド テクノロジーの探求: フロントエンド開発の新しいビジョン Mar 28, 2024 pm 01:06 PM

Go 言語は、高速で効率的なプログラミング言語として、バックエンド開発の分野で広く普及しています。ただし、Go 言語をフロントエンド開発と結(jié)びつける人はほとんどいません。実際、フロントエンド開発に Go 言語を使用すると、効率が向上するだけでなく、開発者に新たな視野をもたらすことができます。この記事では、フロントエンド開発に Go 言語を使用する可能性を探り、読者がこの分野をよりよく理解できるように具體的なコード例を示します。従來のフロントエンド開発では、ユーザー インターフェイスの構(gòu)築に JavaScript、HTML、CSS がよく使用されます。

Vue.js vs. React:プロジェクト固有の考慮事項(xiàng) Vue.js vs. React:プロジェクト固有の考慮事項(xiàng) Apr 09, 2025 am 12:01 AM

VUE.JSは、中小規(guī)模のプロジェクトや迅速な反復(fù)に適していますが、Reactは大規(guī)模で複雑なアプリケーションに適しています。 1)Vue.jsは使いやすく、チームが不十分な狀況やプロジェクトスケールが小さい狀況に適しています。 2)Reactにはより豊富なエコシステムがあり、高性能で複雑な機(jī)能的ニーズを持つプロジェクトに適しています。

PHPのデータ構(gòu)造の可視化技術(shù) PHPのデータ構(gòu)造の可視化技術(shù) May 07, 2024 pm 06:06 PM

PHP でデータ構(gòu)造を視覚化するための主なテクノロジは 3 つあります。 Graphviz: チャート、有向非巡回グラフ、デシジョン ツリーなどのグラフィカル表現(xiàn)を作成できるオープン ソース ツールです。 D3.js: インタラクティブなデータ駆動(dòng)型の視覚化を作成し、PHP から HTML とデータを生成し、D3.js を使用してクライアント側(cè)で視覚化するための JavaScript ライブラリです。 ASCIIFlow: プロセスとアルゴリズムの視覚化に適した、データ フロー図のテキスト表現(xiàn)を作成するためのライブラリ。

フロントエンドの面接官からよく聞かれる質(zhì)問 フロントエンドの面接官からよく聞かれる質(zhì)問 Mar 19, 2024 pm 02:24 PM

フロントエンド開発のインタビューでは、HTML/CSS の基本、JavaScript の基本、フレームワークとライブラリ、プロジェクトの経験、アルゴリズムとデータ構(gòu)造、パフォーマンスの最適化、クロスドメイン リクエスト、フロントエンド エンジニアリング、デザインパターン、新しいテクノロジーとトレンド。面接官の質(zhì)問は、候補(bǔ)者の技術(shù)スキル、プロジェクトの経験、業(yè)界のトレンドの理解を評(píng)価するように設(shè)計(jì)されています。したがって、候補(bǔ)者はこれらの分野で自分の能力と専門知識(shí)を証明するために十分な準(zhǔn)備をしておく必要があります。

Golang とフロントエンド テクノロジーの組み合わせ: Golang がフロントエンド分野でどのような役割を果たすかを探る Golang とフロントエンド テクノロジーの組み合わせ: Golang がフロントエンド分野でどのような役割を果たすかを探る Mar 19, 2024 pm 06:15 PM

Golang とフロントエンド テクノロジーの組み合わせ: Golang がフロントエンド分野でどのような役割を果たしているかを調(diào)べるには、具體的なコード例が必要です。インターネットとモバイル アプリケーションの急速な発展に伴い、フロントエンド テクノロジーの重要性がますます高まっています。この分野では、強(qiáng)力なバックエンド プログラミング言語としての Golang も重要な役割を果たします。この記事では、Golang がどのようにフロントエンド テクノロジーと組み合わされるかを検討し、具體的なコード例を通じてフロントエンド分野での可能性を?qū)g証します。フロントエンド分野における Golang の役割は、効率的で簡潔かつ學(xué)びやすいものとしてです。

Vue.jsは學(xué)ぶのが難しいですか? Vue.jsは學(xué)ぶのが難しいですか? Apr 04, 2025 am 12:02 AM

Vue.jsは、特にJavaScriptファンデーションを持つ開発者にとって、學(xué)ぶのは難しくありません。 1)その進(jìn)歩的な設(shè)計(jì)とレスポンシブシステムは、開発プロセスを簡素化します。 2)コンポーネントベースの開発により、コード管理がより効率的になります。 3)使用例は、基本的および高度な使用法を示しています。 4)一般的なエラーは、vuedevtoolsを介してデバッグできます。 5)V-IF/V-Showや重要な屬性を使用するなど、パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率を向上させることができます。

See all articles