百度地图展示

该代码示例展示了如何在React应用中结合antd-mobile的FloatingPanel和List组件,以及百度地图BMapGL库进行地图展示、点击事件处理、地址解析和标注功能。用户可以从列表选择地址或输入自定义地址,然后在地图上显示并中心化该位置。
摘要由CSDN通过智能技术生成
import React, { useEffect, useState } from 'react';
import { FloatingPanel, List } from 'antd-mobile';
import './App.css'
export default function Index() {
  const [img, setImg] = useState('保定市莲池区南二环河北科技学院皇悦酒店')
  const [tode, setTode] = useState()

  useEffect(() => {
    const map = new window.BMapGL.Map('index-top');
    const point = new window.BMapGL.Point(113.67661912165312,34.75940256033543);
    map.centerAndZoom(point, 12);
    map.enableScrollWheelZoom(true);
    // var label = new window.BMapGL.Label('哈哈哈', {       // 创建文本标注
    //   position: point,                          // 设置标注的地理位置
    //   offset: new window.BMapGL.Size(20, 30)           // 设置标注的偏移量
    // })
    // map.addOverlay(label);
    // 设置地图事件
    map.addEventListener('click', function (e) {
      console.log(e.latlng,'23');
    });


    var myGeo = new window.BMapGL.Geocoder();
    // 将地址解析结果显示在地图上,并调整地图视野
    myGeo.getPoint('保定市莲池区南二环河北科技学院皇悦酒店', function (point) {
      if (point) {
        map.centerAndZoom(point, 16);
        map.addOverlay(new window.BMapGL.Marker(point, { title: '保定市莲池区南二环河北科技学院皇悦酒店' }))
      } else {
        alert('您选择的地址没有解析到结果!');
      }
    }, '河南省')
  }, [])

  const dian = (value) => {
    console.log(value);
    const map = new window.BMapGL.Map('index-top');
    map.enableScrollWheelZoom(true);
    var myGeo = new window.BMapGL.Geocoder(value);
    // 将地址解析结果显示在地图上,并调整地图视野
    myGeo.getPoint(value, function (point) {
      if (point) {
        map.centerAndZoom(point, 16);
        map.addOverlay(new window.BMapGL.Marker(point, { title: value }))
      } else {
        alert('您选择的地址没有解析到结果!');
      }
    }, value)

  }
  const [list, setList] = useState([
    { id: Math.random(), name: '南京' },
    { id: Math.random(), name: '上海' },
    { id: Math.random(), name: '北京' },
    { id: Math.random(), name: '南erg京' },
    { id: Math.random(), name: '南tr京' },
  ])
  const anchors = [100, 260];

  const hh = (value, e) => {
    if (e.keyCode === 13) {
      // console.log(value,67);
      dian(value)
    }
  }
  return (
    <div className='index'>
      <div id="index-top">

      </div>
      <div >
        <FloatingPanel anchors={anchors}>
          <List>
            {list.map(item => {
              return (
                <List.Item key={item.id} onClick={() => {
                  setImg(item.name)
                  dian(item.name)
                }}>{item.name}</List.Item>
              )
            })}
          </List>
        </FloatingPanel>
        <hr />
        <input type="text" value={tode} onKeyDown={(e) => {
          hh(e.target.value, e)
        }} />

      </div>
    </div>
  )
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值