ebike-ui/ebike-user/pages/map/map-findbike.vue
2025-04-28 15:37:57 +08:00

99 lines
2.1 KiB
Vue

<template>
<div >
<div class="divLowerLeft">
<div class="divBtn">
<div class="divBtnTitle">
<uni-icons custom-prefix="iconfont" type="icon-ebikejia" :color="iconcolor" :size="iconsize"
@click="onZoom('out')" />
</div>
<div class="divBtnTitle">
<uni-icons custom-prefix="iconfont" type="icon-ebikejian" :color="iconcolor" :size="iconsize"
@click="onZoom('in')" />
</div>
<div class="divBtnTitle" style="padding-bottom: 10px;" @click="getLocation">
<uni-icons custom-prefix="iconfont" type="icon-ebikedingwei2" :color="iconcolor" :size="iconsize" />
</div>
</div>
</div>
<map id="mapRef" ref="mapRef" show-location style="width: 100%;height: 100vh;" :scale="scale" :markers="markers"
:longitude="mapcenter.longitude" :latitude="mapcenter.latitude"/>
</div>
</template>
<script setup>
import {
onLoad
} from "@dcloudio/uni-app";
import {
ref,onMounted,getCurrentInstance
} from "vue";
import * as map from "@/utils/map.js";
const mapRef=ref("mapRef");
let oMap=null;
const scale=ref(15);
const markers=ref();
const mapcenter=ref({
longitude:"",latitude:""
})
onMounted(()=>{
oMap= map.getMap("mapRef",getCurrentInstance());
});
onLoad((option) => {
const {longitude:lng,latitude:lat} = option;
mapcenter.value={longitude:lng,latitude:lat};
const arrPoints=markers.value||[];
arrPoints.push(map.addMarker(arrPoints.length,lng,lat,"bike-choose.png"));
markers.value=arrPoints;
});
//地图缩放
const onZoom = (lx) => {
switch (lx) {
case "out":
scale.value=scale.value+1;
break;
case "in":
scale.value=scale.value-1;
break;
}
};
//定位
const getLocation = () => {
map.getLoalcation(oMap, (res) => {
const {
latitude,
longitude
} = res;
})
}
</script>
<style scoped>
.divLowerLeft {
position: absolute;
z-index: 100;
left: 10px;
bottom: 30vh;
}
.divBtn {
background-color: white;
font-size: 12px;
border-radius: 5px;
margin-bottom: 5px;
text-align: center;
border: 1px solid #80808061;
padding: 0px 10px;
}
.divBtnTitle {
padding-top: 10px;
}
</style>