首页 > 其他分享 >高德地图API

高德地图API

时间:2024-04-04 23:12:12浏览次数:12  
标签:function status const 地图 API result position 高德 AMap

1.准备

注册账号,申请应用
https://console.amap.com/dev/key/app
https://lbs.amap.com/api/javascript-api-v2/summary

2.Vue3中使用定位和搜索插件

<template>
    <div style="text-align: center; align-items: center">
        <el-row>
            <el-col :span="24">
                <el-input v-model="positionInput"
                          id="searchInputId"
                          class="common-layout"
                          size="small"
                          placeholder="输入关键词搜索位置"
                          style="height:25px;width:26%;margin-left:1%;"/>
                <el-button>搜索</el-button>
                <el-button type="primary" @click="submitPosition()">确定</el-button>
            </el-col>
        </el-row>
        <el-row style="margin-top: 10px; margin-bottom: 10px">
            <el-col>
                <div>
                    选中的地址:{{data.position.detailAddress}}
                </div>
            </el-col>
        </el-row>
    </div>
    <div class="gdmap-container">
        <div id="container"></div>
    </div>
</template>

<script lang="ts" setup>
import AMapLoader from "@amap/amap-jsapi-loader";
import { onMounted, ref, reactive } from 'vue';
import { ElMessage } from "element-plus";
import {useStore} from "vuex";
import {useRouter} from "vue-router";
const store = useStore();
const router = useRouter()
const positionInput = ref('');

// Data
const data = reactive({
    positionInput:'',
    keyword:'',
    position:{
        
    }
})

const submitPosition = () => {
    if (data.position.detailAddress === '') {
        ElMessage.error('请选择地址');
        return;
    }
    console.log(data.position)
    sessionStorage.setItem('position', JSON.stringify(data.position))
    router.go(-1)
}

/**
 * 初始化地图
 */
const initMap = () => {
    window._AMapSecurityConfig = {
        securityJsCode: "", // 密钥
    };
    AMapLoader.load({
        key: "", // 申请好的Web端开发者Key,首次调用 load 时必填
        version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
        plugins: [
            'AMap.AutoComplete',
            'AMap.PlaceSearch',
            'AMap.Geocoder'
        ], // 需要使用的的插件列表
    }).then((AMap) => {
        var map = new AMap.Map("container",{
            resizeEnable: true,
            viewMode: "3D", // 是否为3D地图模式
            zoom: 8, // 初始化地图级别
            // center: [118,30], // 初始化地图中心点位置
        });

        // 地理编码插件
        var geocoder;
        AMap.plugin(["AMap.Geocoder"], function () {
            geocoder = new AMap.Geocoder({
                radius: 1000, //以已知坐标为中心点,radius为半径,返回范围内兴趣点和道路信息
                extensions: "all" //返回地址描述以及附近兴趣点和道路信息,默认“base”
            });
        });

        // 添加定位插件
        AMap.plugin(["AMap.Geolocation"], function () {
            var geo = new AMap.Geolocation({
                enableHighAccuracy: true,//是否使用高精度定位,默认:true
                timeout: 10000,          //超过10秒后停止定位,默认:5s
                zoomToAccuracy: true,   //定位成功后是否自动调整地图视野到定位点
                needAddress: true,
                extensions: 'all'
            })
            // 添加插件
            map.addControl(geo);

            // 定位当前位置
            geo.getCurrentPosition(<PositionCallback>function (status, result) {
                console.log(status);
                console.log(result);
                if (status === 'complete') {
                    // 获得详细地址
                    if (result.formattedAddress === ''){
                        geocoder.getAddress(new AMap.LngLat(result.position.lng, result.position.lat), function (status, result) {
                            if (status === 'complete' && result.regeocode) {
                                var address = result.regeocode.formattedAddress;
                                console.log('详细地址:', address);
                                data.position.detailAddress = address;
                            } else {
                                console.log('获取详细地址失败');
                            }
                        });
                    }
                } else {
                    ElMessage.error('定位失败');
                }
            });
            // 获取城市信息
            geo.getCityInfo(function (status, result) {
                if (status == 'complete') {

                } else {
                    ElMessage.error('获取城市失败');
                }
            });
        });

        // 搜索自动补全插件
        const auto = new AMap.AutoComplete({
            pageSize: 5, //每页结果数,默认10
            pageIndex: 1, //请求页码,默认1
            input: "searchInputId",
        });
        // 搜索插件
        const placeSearch = new AMap.PlaceSearch({
            map: map,
            panel: "panel",
            pageSize: 5, //每页结果数,默认10
            pageIndex: 1, //请求页码,默认1
        });
        auto.on("select",select);

        function select(e) {
            placeSearch.setCity(e.poi.adcode);
            placeSearch.search(e.poi.name, function (status, result){

            });  //关键字查询查询
        }
        // 点击搜索得到的结果
        placeSearch.on('markerClick', function (e) {
            // 处理用户点击地图标记的操作
            console.log(e);
        });

    })
}

onMounted(() => {
    initMap();
});

</script>

<style scoped>
.gdmap-container{
    margin-left: 20%;
    width: 800px;
    height: 800px;
}
#container {
    padding: 0px;
    margin: 0px;
    border:1px solid gray;
    width: 100%;
    height: 100%;
}
</style>

3.JS API2

标签:function,status,const,地图,API,result,position,高德,AMap
From: https://www.cnblogs.com/lwx11111/p/18115122

相关文章

  • win server系统物理机转成虚拟机出现 计算机丢失api-ms-win-crt-stdio-|1-1-0.dll问题
     物理机转移虚拟机的方案有很多种,这里讲下官方的这个转移工具转移,很简单下载下来一步步跟着点就好了。但是server系统的话可能会出现如图这样子的报错,缺少dll文件,这是因为server系统本身缺少这个文件组,解决方式有两种:1.去下载dll表文件,放置对应的文件夹下面,重新迁移2.利用......
  • 数组Api归纳篇——splice与slice
    1、splicesplice() 方法就地移除或者替换已存在的元素/添加新的元素。 语法:splice(start,deleteCount,item)        1、start开始索引    2、deleteCount删除几个    3、item替换/添加的元素    4、返回值:一个包含了【删除的元......
  • 如何为您的网站构建和提交 XML 站点地图
    向Google提交站点地图可以让搜索引擎抓取您的内容并为其建立索引。这对您的SEO有利。明白了吗?不,我想......
  • 立即解锁免费GPT4 API KEY,畅享顶尖资源!
    作者之前曾经探索过很多可以免费使用GPT-4的方法,但在使用一些AI工具或谷歌插件时,却需要填写GPT的APIKEY。而OpenAI是根据token数计费的。那么,有没有办法可以免费获得GPT的APIKEY呢?确实是有的。在这篇文章中,我将介绍如何通过一个开源工具取得免费的GPTAPIKEY,并探索在实际应用......
  • 探索网站地图:制作详细站点导览的技巧与窍门
    什么是网站地图网站地图,又叫站点地图,它就是一个列出了你网站上所有页面地址的清单文件,一般来说分为2种,一种是给搜索引擎看的,一种是给用户看的,前者帮助搜索引擎更好地收录你的网站,后者帮助用户更好的了解你的网站整体结构、更快的找到他们想要找的内容。本文讲的主要是前者。......
  • jdk8 StreamAPI 的使用
    本文将以UmsMenu对象为例来介绍StreamAPI的常用操作。UmsMenu是一个菜单对象,具有树形结构,对象定义如下Stream对象的创建Stream对象分为两种,一种串行的流对象,一种并行的流对象。1//menuList指所有菜单列表2//为集合创建串行流对象3Stream<UmsMenu>stream=menuLis......
  • 2-29. 实现拖拽物品交换数据和在地图上生成物品
    修改InventoryManager修改SlotUI解决拖拽结束后高亮显示不正确的问题实现物品扔到地上的效果添加ItemManager修改EventHandler,添加在地图上生成物品的事件在SlotUI上触发事件ItemManager监听事件此外还要在01.Field场景中添加一个ItemParent对象,它的T......
  • FlowableAPI的使用
    //它涉及启动流程定义的新流程实例。RuntimeServiceruntimeService=processEngine.getRuntimeService();//RepositoryService可能是使用Flowable引擎时需要的第一个服务。RepositoryServicerepositoryService=processEngine.getRepositoryService();//围绕任务......
  • L3-007 天梯地图
    拿起题就开始写,最后提交测试点2和测试点3就是过不去。感觉一点问题都没有,好郁闷,找了半天,发现地点的编号是0开始的,而我一直在从1遍历....思路就是两个dijkstra,这两次思路是完全一样的,只是一个是最短距离最少节点,一个是最短时间最短距离,所以分别需要增加一个累计经过节点数量和累......
  • 微信开发api
    VideosApi,接口平台。微信ipad是通过逆向原理去获取,一款微信辅助软件,可以实现很多功能,使使用微信工作变得更有效率。协议就是基于微信IPad协议的智能控制系统,利用人工智进行人工操作具体功能:登录:扫码登录好友管理:添加好友、删除好友、修改备注、创建标签、获取好友列表......