vue-amap
, в основном адаптированный к связанным с AMap 2.0 интерфейсам, при этом форма привязки событий была скорректирована для использования v-on для привязки событий.Для версий vue2 используйте версию 0. x, соответствующую ветке vue2
Если вы считаете это полезным, можете добавить звездочку
// Установите основную библиотеку
npm i -S @vuemap/vue-amap
// Установите библиотеки, связанные с loca
npm i -S @vuemap/vue-amap-loca
// Установите другие расширяемые библиотеки, главным образом связанные с Threejs
npm i -S @vuemap/vue-amap-extra
Импортируйте @vuemap/vue-amap
// импорт
import VueAMap, {initAMapApiLoader} from '@vuemap/vue-amap';
import '@vuemap/vue-amap/dist/style.css';
// инициализация
initAMapApiLoader({
// ключ AMap
key: 'YOUR_KEY',
securityJsCode: 'securityJsCode', // Новая версия ключа требует использования безопасного ключа
//Loca:{
// version: '2.0.0'
//} // Если вам требуется использовать библиотеку компонентов Loca, вам потребуется загрузить Loca
});
createApp(App).use(VueAMap)
Сначала вам нужно установить unplugin-vue-components
、 unplugin-auto-import
、 @vuemap/unplugin-resolver
Предупреждение, если вы хотите использовать @vuemap/vue-amap@1,
@vuemap/unplugin-resolver
должен использовать версию 1.x.x
npm install -D unplugin-vue-components unplugin-auto-import @vuemap/unplugin-resolver
npm install -D unplugin-vue-components unplugin-auto-import @vuemap/unplugin-resolver@1
Затем импортируйте CSS и инициализируйте ключи в main.ts
import App from './App.vue'
import {initAMapApiLoader} from '@vuemap/vue-amap';
import '@vuemap/vue-amap/dist/style.css'
initAMapApiLoader({
key: 'YOUR_KEY'
})
createApp(App)
.mount('#app')
Переопределите конфигурационный файл еще раз и вставьте следующий код в ваш файл конфигурации Vite или Webpack
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import {VueAmapResolver} from '@vuemap/unplugin-resolver'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
AutoImport({
resolvers: [VueAmapResolver()],
}),
Components({
resolvers: [VueAmapResolver()],
}),
]
})
<template>
<div class="map-page-container">
<el-amap
:center="center"
:zoom="zoom"
@init="init"
/>
</div>
<div class="toolbar">
<button @click="add()">
добавить маркер
</button>
</div>
</template>
<script lang="ts" setup>
import {ref} from "vue";
import {ElAmap} from "@vuemap/vue-amap";
const zoom = ref(12);
const center = ref([121.59996, 31.197646]);
let map = null;
const init = (e) => {
const marker = new AMap.Marker({
position: [121.59996, 31.197646]
});
e.add(marker);
map = e;
console.log('карта инициализирована: ', map)
}
const add = () => {
const marker = new AMap.Marker({
position: [121.59996, 31.177646]
});
map.add(marker);
}
</script>
<style>
</style>
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.