当前位置:首页 > VUE

vue实现搜索附近医院

2026-02-22 10:40:03VUE

实现思路

通过Vue结合高德地图API或百度地图API实现搜索附近医院功能。核心步骤包括获取用户位置、调用地图API搜索附近医院、展示结果。

获取用户位置

使用浏览器Geolocation API获取用户经纬度坐标。需注意https环境下才能正常调用。

navigator.geolocation.getCurrentPosition(
  position => {
    const { latitude, longitude } = position.coords
    this.userLocation = { lat: latitude, lng: longitude }
  },
  error => {
    console.error('获取位置失败:', error)
  }
)

调用地图API

以高德地图为例,需先引入AMap SDK:

<script src="https://webapi.amap.com/maps?v=2.0&key=你的高德Key"></script>

创建地图实例并搜索:

const map = new AMap.Map('map-container', {
  center: [this.userLocation.lng, this.userLocation.lat],
  zoom: 15
})

AMap.plugin('AMap.PlaceSearch', () => {
  const placeSearch = new AMap.PlaceSearch({
    type: '医院',
    pageSize: 20
  })
  placeSearch.searchNearBy('', [this.userLocation.lng, this.userLocation.lat], 5000, (status, result) => {
    this.hospitals = result.poiList.pois
  })
})

展示搜索结果

在Vue模板中渲染医院列表:

<div v-for="hospital in hospitals" :key="hospital.id">
  <h3>{{ hospital.name }}</h3>
  <p>{{ hospital.address }}</p>
  <p>距离:{{ hospital.distance }}米</p>
  <p>电话:{{ hospital.tel || '暂无' }}</p>
</div>

完整组件示例

<template>
  <div>
    <div id="map-container" style="width:100%;height:300px"></div>
    <div v-if="hospitals.length">
      <div v-for="hospital in hospitals" :key="hospital.id">
        <h3>{{ hospital.name }}</h3>
        <p>{{ hospital.address }}</p>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      userLocation: null,
      hospitals: []
    }
  },
  mounted() {
    this.initMap()
  },
  methods: {
    initMap() {
      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(
          position => {
            this.userLocation = {
              lat: position.coords.latitude,
              lng: position.coords.longitude
            }
            this.loadAMap()
          },
          error => {
            console.error('获取位置失败:', error)
          }
        )
      }
    },
    loadAMap() {
      const script = document.createElement('script')
      script.src = `https://webapi.amap.com/maps?v=2.0&key=你的高德Key`
      script.onload = () => this.searchHospitals()
      document.head.appendChild(script)
    },
    searchHospitals() {
      const map = new AMap.Map('map-container', {
        center: [this.userLocation.lng, this.userLocation.lat],
        zoom: 15
      })

      AMap.plugin('AMap.PlaceSearch', () => {
        const placeSearch = new AMap.PlaceSearch({
          type: '医院',
          pageSize: 20
        })
        placeSearch.searchNearBy('', [this.userLocation.lng, this.userLocation.lat], 5000, (status, result) => {
          this.hospitals = result.poiList.pois
        })
      })
    }
  }
}
</script>

注意事项

  1. 需申请高德或百度地图开发者Key
  2. 生产环境需处理定位失败等异常情况
  3. 可添加距离排序、分类筛选等增强功能
  4. 移动端建议添加定位权限请求提示

vue实现搜索附近医院

标签: 附近医院
分享给朋友:

相关文章

PHP实现医院

PHP实现医院

PHP实现医院管理系统 医院管理系统通常包含患者管理、医生排班、药品库存、预约挂号等功能。以下是使用PHP实现医院管理系统的关键步骤和代码示例。 数据库设计 创建数据库表结构是系统的基础。主要表包括…

PHP实现医院

PHP实现医院

PHP实现医院管理系统的基本功能 医院管理系统需要涵盖多个模块,包括患者管理、医生排班、药品库存、病历记录等。以下是一个基本的PHP实现框架: 数据库设计 创建MySQL数据库表结构,例如:…

php实现医院挂号

php实现医院挂号

PHP实现医院挂号系统 数据库设计 创建数据库表结构是挂号系统的核心部分。主要需要以下表: 患者表(patients):存储患者基本信息 医生表(doctors):存储医生信息 科室表(depart…

php附近的人实现

php附近的人实现

实现附近的人功能 附近的人功能通常基于地理位置信息,通过计算用户之间的距离来筛选附近的人。在PHP中,可以通过以下步骤实现: 数据库设计 需要存储用户的地理位置信息,通常使用经度和纬度表示。可以在用…

php实现附近的人

php实现附近的人

使用MySQL空间函数实现 MySQL的ST_Distance_Sphere函数可以计算两个地理坐标点之间的距离(单位:米)。需要确保MySQL版本在5.7以上且表中包含空间数据类型字段。 创建包…