2 lines
2.0 KiB
JavaScript
2 lines
2.0 KiB
JavaScript
|
import{r as a,J as e,c as t,w as n,i as s,o as l,a as o,b as c,t as i,u,F as r,s as d,I as m,a3 as p,h as f,x as _}from"./index-DBAIfIdy.js";import{_ as g}from"./_plugin-vue_export-helper.BCo6x5W8.js";const v=g({__name:"index",setup(g){const v=a(""),y=a([]);let h=null,q=null;async function k(){const a=v.value.trim();if(!a)return void d({title:"请输入搜索内容",icon:"none"});y.value=[];const e=h.getCenter(),t=e.getLat(),n=e.getLng(),s=`https://apis.map.qq.com/ws/place/v1/search?keyword=${encodeURIComponent(a)}&boundary=nearby(${t},${n},1000)&key=WTPBZ-L3O3T-L6SXZ-VOPZA-FU77K-MPB2G`;try{const a=await fetch(s),e=await a.json();0===e.status&&e.data&&e.data.length>0?y.value=e.data.map((a=>({name:a.title,address:a.address,lat:a.location.lat,lng:a.location.lng}))):d({title:"未搜索到结果",icon:"none"})}catch(l){console.error("搜索失败:",l),d({title:"搜索失败",icon:"none"})}}return e((()=>{!function(a,e){const t=new qq.maps.LatLng(a,e);h=new qq.maps.Map(document.getElementById("map"),{center:t,zoom:15}),q=new qq.maps.Marker({position:t,map:h})}(39.9042,116.4074)})),(a,e)=>{const d=m,g=p,w=s,L=f;return l(),t(w,{class:"container"},{default:n((()=>[o(w,{class:"search-bar"},{default:n((()=>[o(d,{type:"text",modelValue:v.value,"onUpdate:modelValue":e[0]||(e[0]=a=>v.value=a),placeholder:"搜索地点",onConfirm:k},null,8,["modelValue"]),o(g,{onClick:k},{default:n((()=>[c("搜索")])),_:1})])),_:1}),o(w,{id:"map",class:"map"}),y.value.length?(l(),t(w,{key:0,class:"result-list"},{default:n((()=>[(l(!0),i(r,null,u(y.value,((a,e)=>(l(),t(w,{class:"poi-item",key:e,onClick:e=>function(a){const e=new qq.maps.LatLng(a.lat,a.lng);h.setCenter(e),q.setPosition(e)}(a)},{default:n((()=>[o(L,{class:"poi-name"},{default:n((()=>[c(_(a.name),1)])),_:2},1024),o(L,{class:"poi-address"},{default:n((()=>[c(_(a.address),1)])),_:2},1024)])),_:2},1032,["onClick"])))),128))])),_:1})):(l(),t(w,{key:1,class:"info"},{default:n((()=>[o(L,null,{default:n((()=>[c("请选择或搜索地点")])),_:1})])),_:1}))])),_:1})}}},[["__scopeId","data-v-3c3af77e"]]);export{v as default};
|