vue2
liyongbin 2024-01-29 15:13:30 +08:00
parent 4c18a3f47b
commit 301007cd6b
10 changed files with 376 additions and 2 deletions

View File

@ -14,14 +14,16 @@
"test:ci": "npm run lint && npm run test:unit"
},
"dependencies": {
"@amap/amap-jsapi-loader": "^1.0.1",
"axios": "0.18.1",
"core-js": "3.6.5",
"element-ui": "2.13.2",
"element-ui": "^2.15.12",
"js-cookie": "2.2.0",
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
"path-to-regexp": "2.4.0",
"vue": "2.6.10",
"vue-baidu-map": "^0.21.22",
"vue-router": "3.0.6",
"vuex": "3.1.0"
},

View File

@ -15,3 +15,5 @@
<!-- built files will be auto injected -->
</body>
</html>
<!-- 引入高德地图API -->
<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=44ea4ac03cbd3cefc6397e1af606a3c0"></script>

View File

View File

View File

@ -15,6 +15,35 @@ import router from './router'
import '@/icons' // icon
import '@/permission' // permission control
//百度地图 全局注册一次性引入
import BaiduMap from 'vue-baidu-map'
/**
* 百度
*/
Vue.use(BaiduMap, {
/* 需要注册百度地图开发者来获取你的ak */
ak: 'tqZyKtiyv367BS34ve0D92UBadXlf3LP'
})
/**
* 高德
*/
import AMapLoader from "@amap/amap-jsapi-loader";
AMapLoader.load({
'key': '44ea4ac03cbd3cefc6397e1af606a3c0',
'version': '2.0', // 指定要加载的 JSAPI 的版本,缺少时默认为 1.4.15
'plugins': ['AMap.Scale','AMap.GeoJSON'] // 需要使用的的插件列表,如比例尺'AMap.Scale'等,更多插件请看官方文档
}).then((AMap) => {
Vue.use(AMap)
})
Vue.prototype.mapJsKey = '44ea4ac03cbd3cefc6397e1af606a3c0'; // jsApi
Vue.prototype.mapServiceKey = '5756347f1804ff075028f0888516402c'; // 服务端
// 配置安全密钥
window._AMapSecurityConfig = {
securityJsCode: '5690e34e121bb31129a44487f03bf7e5', //* 安全密钥
};
/**
* If you don't want to use mock-server
* you want to use MockJs for mock api

View File

@ -89,7 +89,42 @@ export const constantRoutes = [
}
]
},
{
path: '/百度地图',
component: Layout,
children: [
{
path: 'index',
name: '百度地图',
component: () => import('@/views/baidu/index'),
meta: { title: '百度地图', icon: '百度地图' }
}
]
},
{
path: '/高德地图',
component: Layout,
children: [
{
path: 'index',
name: '高德地图',
component: () => import('@/views/gaode/index'),
meta: { title: '高德地图', icon: '高德地图' }
}
]
},
{
path: '/websocket',
component: Layout,
children: [
{
path: 'index',
name: 'websocket',
component: () => import('@/views/websocket/index'),
meta: { title: 'websocket', icon: 'websocket' }
}
]
},
{
path: '/nested',
component: Layout,

View File

@ -0,0 +1,135 @@
<template>
<div>
<!--
scroll-wheel-zoom是是否可以缩放
@ready是图加载完后触发事件
center是位置定位
zoom是缩放大小限制
inertial-dragging是允许惯性拖拽
-->
<baidu-map
class="bm-view"
:zoom="15"
:center="center"
inertial-dragging
@ready="mapReady"
:scroll-wheel-zoom="true"
>
<!-- 定位控件 anchor="BMAP_ANCHOR_BOTTOM_RIGHT"代表放在右下角 -->
<bm-geolocation
anchor="BMAP_ANCHOR_BOTTOM_RIGHT"
:showAddressBar="true"
:autoLocation="true"
></bm-geolocation>
<!-- 地区检索 keyword关键字搜索 @searchcomplete检索完成后的回调函数 auto-viewport检索结束后是否自动调整地图事业 -->
<bm-local-search
:keyword="keyword"
@searchcomplete="search"
:auto-viewport="true"
class="search"
></bm-local-search>
<!-- 缩放控件 anchor代表控件停靠位置 anchor="BMAP_ANCHOR_TOP_RIGHT"代表放在右上角-->
<bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-navigation>
</baidu-map>
</div>
</template>
<baidu-map>
<!-- 其他组件... -->
<button @click="startDrawing"></button>
</baidu-map>
<script>
export default {
data() {
return {
//
center:[],
//
keyword: "",
//input
input3: "",
};
},
methods: {
startDrawing() {
this.drawingManager.open();
},
//
inputfz() {
this.keyword = this.input3;
},
search(){},
//
mapReady({ BMap, map }) {
//thisthisvue
const _this = this;
//
var geolocation = new BMap.Geolocation();
//
geolocation.getCurrentPosition(
function (r) {
console.log(r );
console.log(r.address.province );
console.log(r.address.city );
_this.center = {
lng: r.point.lng,
lat: r.point.lat,
};
},
//
{ enableHighAccuracy: true }
);
}
},
mapReady({ BMap, map }) {
// ...
// DrawingManager
this.drawingManager = new BMapLib.DrawingManager(map, {
isOpen: false, //
enableDrawingTool: true, //
drawingToolOptions: {
anchor: BMAP_ANCHOR_TOP_RIGHT, //
offset: new BMap.Size(5, 5), //
},
circleOptions: {
strokeWeight: 2, // 线
fillOpacity: 0.1, //
strokeStyle: "solid", // 线
},
}); //
const point = new BMap.Point(经度, 纬度); //
const marker = new BMap.Marker(point);
//
map.addOverlay(marker);
},
mounted() {
// ...
const drawingScript = document.createElement("script");
drawingScript.type = "text/javascript";
drawingScript.src =
"https://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js";
document.head.appendChild(drawingScript);
},
};
</script>
<style scoped>
/* 给个宽高 */
.bm-view {
height: 650px;
width: 700px;
}
.input-with-select {
width: 400px;
margin-bottom: 5px;
}
.search {
height: 300px;
overflow: auto;
}
</style>

View File

@ -0,0 +1,107 @@
<template>
<!-- 高德地图组件 -->
<div class="map">
<div class="map-search">
<div class="map-search__area">
<span class="search-title">地区</span>
<el-cascader
v-model="areaValue"
:options="areaOptions"
:props="areaProps"
:teleported="false"
separator="-"
placeholder="请选择"
popper-class="dropDownPanel"
@change="handleAreaChange"
/>
</div>
</div>
<div
v-loading="loading"
element-loading-text="数据更新中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(25,81,135,0.7)"
id="qyContainer">
</div>
</div>
</template>
<script>
//
import AMapLoader from '@amap/amap-jsapi-loader'
// code
// import { regionDataPlus } from 'element-china-area-data'
export default {
name: "GapDeMap",
data() {
return {
areaProps: { //
value: 'value',
label: 'label',
children: 'children'
},
areaOptions: regionDataPlus, //
areaValue: ['330000', '330100', '330109'], // ['', '']
loading: false, //
map: null, //
AMap: null //
}
},
mounted() {
//
window._AMapSecurityConfig = {
// 使
securityJsCode: '5690e34e121bb31129a44487f03bf7e5'
// https://console.amap.com/dev/key/app
}
this.init()
},
methods: {
init() {
this.$nextTick(() => {
AMapLoader.load({
key: "44ea4ac03cbd3cefc6397e1af606a3c0", // WebKey load
version: "2.0", // JSAPI 1.4.15
plugins: ['AMap.ToolBar', 'AMap.Scale', 'AMap.LngLat'], // 使
AMapUI: {
version: '1.1',
plugins: ['overlay/SimpleMarker']
}
}).then((AMap) => {
this.AMap = AMap
//
this.map = new AMap.Map("qyContainer", { // id
viewMode: "2D", // 3D
zoom: 12, //
center: [120.458373, 30.190322] //
})
// toolbar--
const toolbar = new AMap.ToolBar()
this.map.addControl(toolbar)
}).catch(e => {
console.log(e)
})
})
},
//
handleAreaChange() {
// ...
}
}
}
</script>
<style lang="scss" scoped>
#qyContainer{
padding:0px;
margin: 0px;
width: 700px;
height: 560px;
}
</style>

View File

@ -0,0 +1,60 @@
<div class="sence-box sence-box1">
<div class="sence-in">
<div class="text-left text-box">掘金多多</div>
<div class="text-right text-box">大展鸿图</div>
<div class="long long-left"></div>
<div class="long long-right"></div>
<div class="denglong-box"></div>
<div class="long2 long2-left"></div>
<div class="long2 long2-right"></div>
</div>
</div>
<div class="sence-box sence-box2">
<div class="sence-in">
<div class="text-left text-box">步步高升</div>
<div class="text-right text-box">年年有鱼</div>
<div class="long long-left"></div>
<div class="long long-right"></div>
<div class="denglong-box"></div>
<div class="long2 long2-left"></div>
<div class="long2 long2-right"></div>
<div class="xiangyun"></div>
</div>
</div>
<div class="sence-box sence-box3">
<div class="sence-in">
<div class="text-left text-box">心想事成</div>
<div class="text-right text-box">万事如意</div>
<div class="long long-left"></div>
<div class="long long-right"></div>
<div class="denglong-box"></div>
<div class="long2 long2-left"></div>
<div class="long2 long2-right"></div>
<div class="xiangyun"></div>
</div>
</div>
<div class="sence-box sence-box4">
<div class="sence-in">
<div class="text-left text-box">蒸蒸日上</div>
<div class="text-right text-box">一帆风顺</div>
<div class="long long-left"></div>
<div class="long long-right"></div>
<div class="denglong-box"></div>
<div class="long2 long2-left"></div>
<div class="long2 long2-right"></div>
<div class="xiangyun"></div>
</div>
</div>
<div class="sence-box sence-box5">
<div class="sence-in">
<div class="text-left text-box">自强不息</div>
<div class="text-right text-box">恭喜发财</div>
<div class="sence-block">龙年大吉</div>
<div class="denglong-box"></div>
<div class="long long-left"></div>
<div class="long long-right"></div>
<div class="long2 long2-left"></div>
<div class="long2 long2-right"></div>
<div class="xiangyun"></div>
</div>
</div>

View File

@ -46,6 +46,10 @@ module.exports = {
alias: {
'@': resolve('src')
}
},
externals: {
'AMap': 'AMap',
'AMapUI': 'AMapUI'
}
},
chainWebpack(config) {