高德地图 JS API for Javascript 入门
<h3>一、官方文档</h3><p>地址:https://lbs.amap.com/api/javascript-api-v2/guide/abc/jscode</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231113153221271-995909513.png" alt="" width="756" height="436" loading="lazy"></p>
<p>JS API 示例:https://lbs.amap.com/demo/javascript-api/example/map-lifecycle/map-show</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114104848208-220656545.png" alt="" width="753" height="441" loading="lazy"></p>
<h3>二、申请高德开放平台的账号</h3>
<p>1、注册</p>
<p>地址:https://lbs.amap.com/</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231113152027764-661017039.png" alt="" width="763" height="442" loading="lazy"></p>
<p>点击注册</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231113152108747-231362451.png" alt="" width="757" height="452" loading="lazy"></p>
<p>2、创建应用并申请key</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114103713875-172572887.png" alt="" width="548" height="145" loading="lazy"></p>
<h3>三、快速入门</h3>
<p>1、安装</p>
<div class="cnblogs_code">
<pre>npmi @amap/amap-jsapi-loader</pre>
</div>
<p>安装完成之后,package.json中如下所示:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231113155537910-1970298208.png" alt="" width="367" height="149" loading="lazy"></p>
<p>2、封装成组件</p>
<p>如果您的项目是使用 Vue 框架,建议您将地图的初始化封装成组件,这样更便于使用 Vue 组件的生命周期来加载、创建和销毁地图。</p>
<p>在components目录下新建MapContainer.vue组件</p>
<p>(1)、引入</p>
<div class="cnblogs_code">
<pre>import AMapLoader <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@amap/amap-jsapi-loader</span><span style="color: rgba(128, 0, 0, 1)">"</span>;</pre>
</div>
<p>(2)、mounted中加载地图</p>
<div class="cnblogs_code">
<pre>window._AMapSecurityConfig =<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
AMapLoader.load({
key: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">key</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 申请好的Web端开发者Key,首次调用 load 时必填</span>
version: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.4.15</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15</span>
plugins: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Autocomplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Scale</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.OverView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.ToolBar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MapType</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PolyEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.CircleEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 需要使用的的插件列表,如比例尺'AMap.Scale'等</span>
}).then((AMap) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {</span>
viewMode: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置</span>
<span style="color: rgba(0, 0, 0, 1)"> });</span><span style="color: rgba(0, 0, 0, 1)">
})
.</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((e) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(e);
});</span></pre>
</div>
<p>注意:<span style="color: rgba(255, 0, 0, 1)">使用1.4.15版本,如果使用2.0版本,有些配置不会生效</span>。</p>
<p>MapContainer.vue组件完整代码如下:</p>
<div class="cnblogs_code">
<pre><template>
<div id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span>></div>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
import AMapLoader </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@amap/amap-jsapi-loader</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">map-view</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
mounted() {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.initAMap();
},
unmounted() {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map?<span style="color: rgba(0, 0, 0, 1)">.destroy();
},
methods: {
initAMap() {
window._AMapSecurityConfig </span>=<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode: </span><span style="color: rgba(128, 0, 0, 1)">'安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
AMapLoader.load({
key: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">key</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 申请好的Web端开发者Key,首次调用 load 时必填</span>
version: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.4.15</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15</span>
plugins: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Autocomplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Scale</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.OverView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.ToolBar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MapType</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PolyEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.CircleEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 需要使用的的插件列表,如比例尺'AMap.Scale'等</span>
}).then((AMap) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {</span>
viewMode: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置</span>
<span style="color: rgba(0, 0, 0, 1)"> });</span><span style="color: rgba(0, 0, 0, 1)">
})
.</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((e) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(e);
});
},
},
};
</span></script>
<style scoped><span style="color: rgba(0, 0, 0, 1)">
#container {
width: </span><span style="color: rgba(128, 0, 128, 1)">100</span>%<span style="color: rgba(0, 0, 0, 1)">;
height: 600px;
}
</span></style></pre>
</div>
<p>(3)、HomeView.vue引入组件</p>
<div class="cnblogs_code">
<pre>import Mapview <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">./components/MapContainer.vue</span><span style="color: rgba(128, 0, 0, 1)">"</span></pre>
</div>
<p>(4)、注册组件</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">components: {
Mapview
}</span></pre>
</div>
<p>(5)、使用组件</p>
<div class="cnblogs_code">
<pre><Mapview></Mapview></pre>
</div>
<p>HomeView.vue完整代码如下:</p>
<div class="cnblogs_code">
<pre><template>
<div <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">home</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<Mapview></Mapview>
</div>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
import Mapview </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">../components/MapContainer.vue</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
name: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">HomeView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
components: {
Mapview
}
}
</span></script></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114104543333-1070526728.png" alt="" width="769" height="369" loading="lazy"></p>
<p>注意:<span style="color: rgba(255, 0, 0, 1)">初始化加载地图的时候,调用方法应该写在mounted而不是created中</span>。</p>
<p>隐藏地图左下角的高德地图和版权信息:</p>
<p>找到这个项目的index.html文件,加入如下这段代码</p>
<div class="cnblogs_code">
<pre><style type=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text/css</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
.amap</span>-<span style="color: rgba(0, 0, 0, 1)">logo{
display: none;
opacity:</span><span style="color: rgba(128, 0, 128, 1)">0</span> !<span style="color: rgba(0, 0, 0, 1)">important;
}
.amap</span>-<span style="color: rgba(0, 0, 0, 1)">copyright {
opacity:</span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span></style></pre>
</div>
<p><strong>地图属性设置</strong></p>
<p>(1)、初始设置光标为小手</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置</span>
<span style="color: rgba(255, 0, 0, 1)">defaultCursor:'pointer',</span>
});</pre>
</div>
<p>设置为其他样式</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map.setDefaultCursor(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">default</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map.setDefaultCursor(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pointer</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map.setDefaultCursor(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">move</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map.setDefaultCursor(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">crosshair</span><span style="color: rgba(128, 0, 0, 1)">"</span>);</pre>
</div>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114171131647-717394037.png" alt="" width="56" height="135" loading="lazy"></p>
<p>(2)、中英文地图</p>
<p>切换成引文地图</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化</span>
lang: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">en</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可选值:en,zh_en, zh_cn</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置</span>
});</pre>
</div>
<p>如下所示:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114105132391-1455977035.png" alt="" width="817" height="397" loading="lazy"></p>
<p>(3)、设置初始地图中心的center和初始缩放级别zoom</p>
<p>zoom级别越大,显示的范围越小。例如,级别19对应的比例尺是20米,而级别1对应的比例尺是10000公里。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化</span>
zoom: <span style="color: rgba(128, 0, 128, 1)">11</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置</span>
});</pre>
</div>
<p>获取zoom和center</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> zoom = <span style="color: rgba(0, 0, 255, 1)">this</span>.map.getZoom(); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取当前地图级别</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> center = <span style="color: rgba(0, 0, 255, 1)">this</span>.map.getCenter(); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取当前地图中心位置</span>
<span style="color: rgba(0, 0, 0, 1)">console.log(zoom)
console.log(center)</span></pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114162146094-1228221164.png" alt="" width="212" height="125" loading="lazy"></p>
<p>设置缩放级别</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> zoom = Math.floor(Math.random() * <span style="color: rgba(128, 0, 128, 1)">7</span>) + <span style="color: rgba(128, 0, 128, 1)">11</span>; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">zoom范围</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.map.setZoom(zoom); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置地图层级</span>
console.info(`当前层级已设为${zoom}级`);</pre>
</div>
<p>设置地图中心</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> lng = <span style="color: rgba(128, 0, 128, 1)">114.31667</span> + Math.floor(Math.random() * <span style="color: rgba(128, 0, 128, 1)">589828</span>) / 1e6; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">经度范围</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> lat = <span style="color: rgba(128, 0, 128, 1)">30.51667</span> + Math.floor(Math.random() * <span style="color: rgba(128, 0, 128, 1)">514923</span>) / 1e6; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">纬度范围</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.map.setCenter(); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置地图中心点</span>
console.info(`当前中心点已设为 ${lng.toFixed(<span style="color: rgba(128, 0, 128, 1)">6</span>)},${lat.toFixed(<span style="color: rgba(128, 0, 128, 1)">6</span>)}`);</pre>
</div>
<p>结果:当前中心点已设为 114.737333,30.934945</p>
<p>同时设置zoom和center</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> zoom = Math.floor(Math.random() * <span style="color: rgba(128, 0, 128, 1)">7</span>) + <span style="color: rgba(128, 0, 128, 1)">11</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">var</span> lng = <span style="color: rgba(128, 0, 128, 1)">121.138398</span> + Math.floor(Math.random() * <span style="color: rgba(128, 0, 128, 1)">589828</span>) /<span style="color: rgba(0, 0, 0, 1)"> 1e6;
</span><span style="color: rgba(0, 0, 255, 1)">var</span> lat = <span style="color: rgba(128, 0, 128, 1)">30.972688</span> + Math.floor(Math.random() * <span style="color: rgba(128, 0, 128, 1)">514923</span>) /<span style="color: rgba(0, 0, 0, 1)"> 1e6;
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map.setZoomAndCenter(zoom, ); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">同时设置地图层级与中心点</span>
console.info(`当前层级已设为${zoom}级,中心点已设为 ${lng.toFixed(<span style="color: rgba(128, 0, 128, 1)">6</span>)},${lat.toFixed(<span style="color: rgba(128, 0, 128, 1)">6</span>)}`);</pre>
</div>
<p>结果:当前层级已设为14级,中心点已设为 121.213062,31.435657</p>
<p>(4)、交互属性</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> lang: "en", </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可选值:en,zh_en, zh_cn
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zoom: 11, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> defaultCursor:'pointer',</span>
showLabel:<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
<span style="color: rgba(255, 0, 0, 1)">showIndoorMap: </span></span><span style="color: rgba(255, 0, 0, 1)">false, // 是否在有矢量底图的时候自动展示室内地图,PC默认true,移动端默认false
resizeEnable: true, //是否监控地图容器尺寸变化,默认值为false
dragEnable: true, // 地图是否可通过鼠标拖拽平移,默认为true
keyboardEnable: true, //地图是否可通过键盘控制,默认为true
doubleClickZoom: true, // 地图是否可通过双击鼠标放大地图,默认为true
zoomEnable: true, //地图是否可缩放,默认值为true
rotateEnable: false, // 地图是否可旋转,3D视图默认为true,2D视图默认false</span>
});</pre>
</div>
<p>(5)、地图控件比例尺和工具条</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map.addControl(<span style="color: rgba(0, 0, 255, 1)">new</span> AMap.ToolBar()) <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 工具条</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.map.addControl(<span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Scale()) <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 比例尺</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.map.addControl(<span style="color: rgba(0, 0, 255, 1)">new</span> AMap.OverView()); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 鹰眼</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114173540308-1848162764.png" alt="" width="797" height="383" loading="lazy"></p>
<p>(6)、获取/设置地图显示范围</p>
<p>获取</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> bounds = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map.getBounds();
console.log(bounds)</span></pre>
</div>
<p>结果:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114164135326-109755331.png" alt="" width="519" height="227" loading="lazy"></p>
<p>设置</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map.on(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">click</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, function () {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> mybounds = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Bounds([<span style="color: rgba(128, 0, 128, 1)">114.398137</span>, <span style="color: rgba(128, 0, 128, 1)">30.51537</span>], [<span style="color: rgba(128, 0, 128, 1)">114.43788</span>,<span style="color: rgba(128, 0, 128, 1)">30.513435</span><span style="color: rgba(0, 0, 0, 1)">]);
that.map.setBounds(mybounds);
});</span></pre>
</div>
<p>当在地图上单击,就会进入设置的显示范围。</p>
<p>(7)、获取鼠标经纬度</p>
<p>展示经纬度</p>
<div class="cnblogs_code">
<pre><template>
<div>
<div <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">input-card</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<h4>左击获取经纬度:</h4>
<div <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">input-item</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<input type=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(0, 0, 255, 1)">readonly</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">true</span><span style="color: rgba(128, 0, 0, 1)">"</span> id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">lnglat</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
</div>
</div>
<div id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span>></div>
</div>
</template></pre>
</div>
<p>单击地图获取经纬度</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map.on(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">click</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, function(e) {
document.getElementById(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">lnglat</span><span style="color: rgba(128, 0, 0, 1)">"</span>).value = e.lnglat.getLng() + <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">,</span><span style="color: rgba(128, 0, 0, 1)">'</span> +<span style="color: rgba(0, 0, 0, 1)"> e.lnglat.getLat()
});</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114165223940-1351117675.png" alt="" width="797" height="396" loading="lazy"></p>
<p>(8)、地图的热点弹框</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">initAMap() {
window._AMapSecurityConfig </span>=<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
AMapLoader.load({
key: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">key</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 申请好的Web端开发者Key,首次调用 load 时必填</span>
version: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.4.15</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15</span>
plugins: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.AutoComplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Scale</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.OverView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.ToolBar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MapType</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PolyEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.CircleEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.RangingTool</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MouseTool</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Bounds</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(255, 0, 0, 1)">'AMap.AdvancedInfoWindow'</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 需要使用的的插件列表,如比例尺'AMap.Scale'等</span>
}).then((AMap) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> resizeEnable: true, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> lang: "en", </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可选值:en,zh_en, zh_cn
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zoom: 11, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> defaultCursor:'pointer',</span>
showLabel:<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
showIndoorMap: </span><span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否在有矢量底图的时候自动展示室内地图,PC默认true,移动端默认false</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">是否监控地图容器尺寸变化,默认值为false</span>
dragEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过鼠标拖拽平移,默认为true</span>
keyboardEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可通过键盘控制,默认为true</span>
doubleClickZoom: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过双击鼠标放大地图,默认为true</span>
zoomEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可缩放,默认值为true</span>
rotateEnable: <span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可旋转,3D视图默认为true,2D视图默认false</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(255, 0, 0, 1)">var placeSearch = new AMap.PlaceSearch();//构造地点查询类
this.infoWindow=new AMap.AdvancedInfoWindow({});
this.map.on('hotspotover', function(result) {
placeSearch.getDetails(result.id, function(status, result) {
if (status === 'complete' && result.info === 'OK') {
that.placeSearch_CallBack(result);
}
});
});</span><span style="color: rgba(0, 0, 0, 1)">
})
.</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((e) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(e);
});
},</span><span style="color: rgba(0, 0, 0, 1)">
placeSearch_CallBack(data) { </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">infoWindow.open(map, result.lnglat);</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> poiArr =<span style="color: rgba(0, 0, 0, 1)"> data.poiList.pois;
</span><span style="color: rgba(0, 0, 255, 1)">var</span> location = poiArr[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">].location;
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.infoWindow.setContent(<span style="color: rgba(0, 0, 255, 1)">this</span>.createContent(poiArr[<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">]));
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.infoWindow.open(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map,location); // 设置弹框的定位
},
createContent(poi) {</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">信息窗体内容</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> s =<span style="color: rgba(0, 0, 0, 1)"> [];
s.push(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"><div class="info-title"></span><span style="color: rgba(128, 0, 0, 1)">'</span>+poi.name+<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"></div><div class="info-content"></span><span style="color: rgba(128, 0, 0, 1)">'</span>+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">地址:</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> poi.address);
s.push(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">电话:</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> poi.tel);
s.push(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">类型:</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> poi.type);
s.push(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"><div></span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">return</span> s.join(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)"><br></span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
},
</span><span style="color: rgba(0, 128, 0, 1)"><br></span></pre>
</div>
<p>样式:</p>
<div class="cnblogs_code">
<pre>.info-<span style="color: rgba(0, 0, 0, 1)">title{
font</span>-<span style="color: rgba(0, 0, 0, 1)">weight: bolder;
color: #fff;
font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 14px;
line</span>-<span style="color: rgba(0, 0, 0, 1)">height: 26px;
padding: </span><span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 6px;
background: #25A5F7
}
.info</span>-<span style="color: rgba(0, 0, 0, 1)">content{
padding: 4px;
color: #</span><span style="color: rgba(128, 0, 128, 1)">666666</span><span style="color: rgba(0, 0, 0, 1)">;
line</span>-<span style="color: rgba(0, 0, 0, 1)">height: 23px;
font: 12px Helvetica, </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Hiragino Sans GB</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Microsoft Yahei</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">微软雅黑</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, Arial;
}
.info</span>-<span style="color: rgba(0, 0, 0, 1)">content img{
</span><span style="color: rgba(0, 0, 255, 1)">float</span><span style="color: rgba(0, 0, 0, 1)">: left;
margin: 3px;
}
.amap</span>-info-combo .keyword-<span style="color: rgba(0, 0, 0, 1)">input {
height: auto;
}</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114170048252-1176332217.png" alt="" width="781" height="373" loading="lazy"></p>
<h3>四、点标记Marker</h3>
<p>1、点标记Marker和Icon<br></p>
<p>(1)、简单点标记</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置地图容器id</span>
viewMode: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化</span>
zoom: <span style="color: rgba(128, 0, 128, 1)">11</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置</span>
<span style="color: rgba(0, 0, 0, 1)"> });<br></span><span style="color: rgba(0, 0, 255, 1)"> var</span> marker1 = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Marker({</span>
position:<span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span><span style="color: rgba(0, 0, 0, 1)">),
title:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">武汉市</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,</span>
<span style="color: rgba(0, 0, 0, 1)"> });</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.map.add();</pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231113173906476-1556861522.png" alt="" width="766" height="392" loading="lazy"></p>
<p>当没有设置Icon时,默认为蓝色图钉图片</p>
<p>删除Marker</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map.remove(marker1);</pre>
</div>
<p>隐藏地图点标记</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">隐藏点标记的图片</span>
.map-right ::v-deep .amap-container .amap-<span style="color: rgba(0, 0, 0, 1)">marker img{
display: none;
}
.map</span>-right ::v-deep .amap-container .amap-marker .amap-marker-<span style="color: rgba(0, 0, 0, 1)">label{
border: none;
background</span>-<span style="color: rgba(0, 0, 0, 1)">color: transparent;
font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 14px;
font</span>-<span style="color: rgba(0, 0, 0, 1)">weight: bold;
color: white;
}</span></pre>
</div>
<p> </p>
<p>(2)、复杂点标记</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置地图容器id</span>
viewMode: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化</span>
zoom: <span style="color: rgba(128, 0, 128, 1)">11</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置</span>
<span style="color: rgba(0, 0, 0, 1)"> });
let icon </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Icon({
size: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">25</span>, <span style="color: rgba(128, 0, 128, 1)">34</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 图标尺寸</span>
image: require(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">@/assets/logo.png</span><span style="color: rgba(128, 0, 0, 1)">'</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 图标的取图地址。默认为蓝色图钉图片</span>
imageSize: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">20</span>, <span style="color: rgba(128, 0, 128, 1)">20</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 取图大小</span>
imageOffset: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>) <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 图标或取图偏移量</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 0, 255, 1)">var</span> marker1 = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Marker({
icon: icon,
position:</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span><span style="color: rgba(0, 0, 0, 1)">),
title:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">武汉市</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
offset: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(-<span style="color: rgba(128, 0, 128, 1)">13</span>, -<span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">)
});</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.map.add();</pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231113174210082-1017411777.png" alt="" width="541" height="395" loading="lazy"></p>
<p>(3)、添加文本标注</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置地图容器id</span>
viewMode: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化</span>
zoom: <span style="color: rgba(128, 0, 128, 1)">11</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置</span>
<span style="color: rgba(0, 0, 0, 1)"> });
let icon </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Icon({
size: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">25</span>, <span style="color: rgba(128, 0, 128, 1)">34</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 图标尺寸</span>
image: require(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">@/assets/logo.png</span><span style="color: rgba(128, 0, 0, 1)">'</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 图标的取图地址。默认为蓝色图钉图片</span>
imageSize: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">20</span>, <span style="color: rgba(128, 0, 128, 1)">20</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 取图大小</span>
imageOffset: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(<span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">0</span>) <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 图标或取图偏移量</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 0, 255, 1)">var</span> marker1 = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Marker({
icon: icon,
position:</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span><span style="color: rgba(0, 0, 0, 1)">),
title:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">武汉市</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
offset: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(-<span style="color: rgba(128, 0, 128, 1)">13</span>, -<span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">),
zoom: </span><span style="color: rgba(128, 0, 128, 1)">13</span><span style="color: rgba(0, 0, 0, 1)">
});
</span><span style="color: rgba(0, 0, 255, 1)">const</span> content = `<div style=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">width:auto</span><span style="color: rgba(128, 0, 0, 1)">"</span>>武汉市</div><span style="color: rgba(0, 0, 0, 1)">`
marker1.setLabel({
content:content,
offset:</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(<span style="color: rgba(128, 0, 128, 1)">20</span>,-<span style="color: rgba(128, 0, 128, 1)">16</span><span style="color: rgba(0, 0, 0, 1)">),
direction: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">top</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
})
</span>
<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map.add();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> this.map.remove(marker1);</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231113175308150-139660429.png" alt="" width="501" height="434" loading="lazy"></p>
<p>(4)、监听鼠标单击事件并设置点标记</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">initAMap() {
window._AMapSecurityConfig </span>=<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode: </span><span style="color: rgba(128, 0, 0, 1)">'安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
AMapLoader.load({
key: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">key</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 申请好的Web端开发者Key,首次调用 load 时必填</span>
version: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.4.15</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15</span>
plugins: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Autocomplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Scale</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.OverView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.ToolBar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MapType</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PolyEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.CircleEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 需要使用的的插件列表,如比例尺'AMap.Scale'等</span>
}).then((AMap) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> lang: "en", </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可选值:en,zh_en, zh_cn
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zoom: 11, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> defaultCursor:'pointer',</span>
showLabel:<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
dragEnable: </span><span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过鼠标拖拽平移,默认为true</span>
keyboardEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可通过键盘控制,默认为true</span>
doubleClickZoom: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过双击鼠标放大地图,默认为true</span>
zoomEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可缩放,默认值为true</span>
rotateEnable: <span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可旋转,3D视图默认为true,2D视图默认false</span>
<span style="color: rgba(0, 0, 0, 1)"> });</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.map.addControl(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.ToolBar())
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map.addControl(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Scale())
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 监听鼠标点击事件</span>
<span style="color: rgba(255, 0, 0, 1)"> this.map.on("click", this.clickMapHandler);</span><span style="color: rgba(0, 0, 0, 1)">
})
.</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((e) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(e);
});
},
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 点击地图事件获取经纬度,并添加标记</span>
<span style="color: rgba(0, 0, 0, 1)"> clickMapHandler(e) {</span>
let marker = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Marker({
position: ,
});
<span style="color: rgba(255, 0, 0, 1)"> marker.setMap(</span></span><span style="color: rgba(255, 0, 0, 1)">this.map);</span>
},</pre>
</div>
<p>当用鼠标点击地图任意位置时,都会产生标记,效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114143402591-603772579.png" alt="" width="729" height="348" loading="lazy"></p>
<p>(5)、使用工具类MouseTool打点</p>
<div class="cnblogs_code">
<pre>window._AMapSecurityConfig =<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode: </span><span style="color: rgba(128, 0, 0, 1)">'安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
AMapLoader.load({
key: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">key</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 申请好的Web端开发者Key,首次调用 load 时必填</span>
version: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.4.15</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15</span>
plugins: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.AutoComplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Scale</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.OverView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.ToolBar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MapType</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PolyEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.CircleEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.RangingTool</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(255, 0, 0, 1)">'AMap.MouseTool'</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 需要使用的的插件列表,如比例尺'AMap.Scale'等</span>
}).then((AMap) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> lang: "en", </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可选值:en,zh_en, zh_cn
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zoom: 11, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> defaultCursor:'pointer',</span>
showLabel:<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
dragEnable: </span><span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过鼠标拖拽平移,默认为true</span>
keyboardEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可通过键盘控制,默认为true</span>
doubleClickZoom: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过双击鼠标放大地图,默认为true</span>
zoomEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可缩放,默认值为true</span>
rotateEnable: <span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可旋转,3D视图默认为true,2D视图默认false</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(255, 0, 0, 1)">var mouseTool = new AMap.MouseTool(this.map);
mouseTool.marker({
//同Marker的Option设置
});
</span><span style="color: rgba(0, 0, 0, 1)">
})
.</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((e) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(e);
});</span></pre>
</div>
<h3>四、海量点</h3>
<p>1、海量点标记</p>
<p>代码</p>
<div class="cnblogs_code">
<pre><template>
<div id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span>></div>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
import AMapLoader </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@amap/amap-jsapi-loader</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">map-view</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
mounted() {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.initAMap();
},
unmounted() {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map?<span style="color: rgba(0, 0, 0, 1)">.destroy();
},
methods: {
initAMap() {
window._AMapSecurityConfig </span>=<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
AMapLoader.load({
key: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">key</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 申请好的Web端开发者Key,首次调用 load 时必填</span>
version: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.4.15</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15</span>
plugins: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Autocomplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Scale</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.OverView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.ToolBar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MapType</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PolyEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.CircleEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 需要使用的的插件列表,如比例尺'AMap.Scale'等</span>
}).then((AMap) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
mapStyle: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">amap://styles/whitesmoke</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置地图的显示样式</span>
viewMode: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化</span>
center: [<span style="color: rgba(128, 0, 128, 1)">116.397428</span>, <span style="color: rgba(128, 0, 128, 1)">39.90923</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置</span>
zoom: <span style="color: rgba(128, 0, 128, 1)">12</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图级别</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 0, 255, 1)">var</span> data =<span style="color: rgba(0, 0, 0, 1)"> [
{
lnglat: [</span><span style="color: rgba(128, 0, 128, 1)">116.397455</span>,<span style="color: rgba(128, 0, 128, 1)">39.909187</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">经纬度</span>
name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">天安门</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
},
{
lnglat: [</span><span style="color: rgba(128, 0, 128, 1)">116.402394</span>,<span style="color: rgba(128, 0, 128, 1)">39.937182</span><span style="color: rgba(0, 0, 0, 1)">],
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">南锣鼓巷</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
},
{
lnglat: [</span><span style="color: rgba(128, 0, 128, 1)">116.427377</span>,<span style="color: rgba(128, 0, 128, 1)">39.902717</span><span style="color: rgba(0, 0, 0, 1)">],
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">北京站</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
},
{
lnglat: [</span><span style="color: rgba(128, 0, 128, 1)">116.315457</span>,<span style="color: rgba(128, 0, 128, 1)">39.959982</span><span style="color: rgba(0, 0, 0, 1)">],
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">北京理工大学</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
},
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">, …,{}, …</span>
<span style="color: rgba(0, 0, 0, 1)"> ];
</span><span style="color: rgba(0, 0, 255, 1)">var</span> style =<span style="color: rgba(0, 0, 0, 1)"> {
url: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">//vdata.amap.com/icons/b18/1/2.png</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标地址</span>
size: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">11</span>, <span style="color: rgba(128, 0, 128, 1)">11</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标大小</span>
anchor: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(<span style="color: rgba(128, 0, 128, 1)">5</span>, <span style="color: rgba(128, 0, 128, 1)">5</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标显示位置偏移量,基准点为图标左上角</span>
<span style="color: rgba(0, 0, 0, 1)"> };
</span><span style="color: rgba(0, 0, 255, 1)">var</span> massMarks = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.MassMarks(data,{
zIndex: </span><span style="color: rgba(128, 0, 128, 1)">5</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">海量点图层叠加的顺序</span>
zooms: [<span style="color: rgba(128, 0, 128, 1)">3</span>, <span style="color: rgba(128, 0, 128, 1)">19</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">在指定地图缩放级别范围内展示海量点图层</span>
style: style, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置样式对象</span>
<span style="color: rgba(0, 0, 0, 1)"> });
massMarks.setMap(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map);
}).</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((e) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(e);
});
},
},
};
</span></script>
<style scoped><span style="color: rgba(0, 0, 0, 1)">
#container {
width: </span><span style="color: rgba(128, 0, 128, 1)">100</span>%<span style="color: rgba(0, 0, 0, 1)">;
height: 100vh;
}
</span></style></pre>
</div>
<p>效果:</p>
<p><img src="https://img2024.cnblogs.com/blog/2138872/202403/2138872-20240325101445666-1107969089.png" alt="" width="569" height="334" loading="lazy"></p>
<p><span data-type="text" data-spm-anchor-id="0.0.0.i8.495e338frGsfWC">如果想为海量点添加多种点样式,可以将多个样式对象放在数组<span data-type="inlineCode">Array<span data-type="text">里。</span></span></span></p>
<div class="cnblogs_code">
<pre><template>
<div id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span>></div>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
import AMapLoader </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@amap/amap-jsapi-loader</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">map-view</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
mounted() {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.initAMap();
},
unmounted() {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map?<span style="color: rgba(0, 0, 0, 1)">.destroy();
},
methods: {
initAMap() {
window._AMapSecurityConfig </span>=<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
AMapLoader.load({
key: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">key</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 申请好的Web端开发者Key,首次调用 load 时必填</span>
version: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.4.15</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15</span>
plugins: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Autocomplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Scale</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.OverView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.ToolBar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MapType</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PolyEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.CircleEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 需要使用的的插件列表,如比例尺'AMap.Scale'等</span>
}).then((AMap) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
mapStyle: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">amap://styles/whitesmoke</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置地图的显示样式</span>
viewMode: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化</span>
center: [<span style="color: rgba(128, 0, 128, 1)">116.397428</span>, <span style="color: rgba(128, 0, 128, 1)">39.90923</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置</span>
zoom: <span style="color: rgba(128, 0, 128, 1)">12</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图级别</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 0, 255, 1)">var</span> data =<span style="color: rgba(0, 0, 0, 1)"> [
{
lnglat: [</span><span style="color: rgba(128, 0, 128, 1)">116.402394</span>,<span style="color: rgba(128, 0, 128, 1)">39.937182</span><span style="color: rgba(0, 0, 0, 1)">],
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">南锣鼓巷</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
style: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
},
{
lnglat: [</span><span style="color: rgba(128, 0, 128, 1)">116.427377</span>,<span style="color: rgba(128, 0, 128, 1)">39.902717</span><span style="color: rgba(0, 0, 0, 1)">],
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">北京站</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
style: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
},
{
lnglat: [</span><span style="color: rgba(128, 0, 128, 1)">116.315457</span>,<span style="color: rgba(128, 0, 128, 1)">39.959982</span><span style="color: rgba(0, 0, 0, 1)">],
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">北京理工大学</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
style: </span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">
},
];
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建样式对象,JS API 2.0支持显示设置 zIndex, zIndex 越大约靠前,默认按顺序排列</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> style =<span style="color: rgba(0, 0, 0, 1)"> [
{
url: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://a.amap.com/jsapi_demos/static/images/mass0.png</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标地址</span>
anchor: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(<span style="color: rgba(128, 0, 128, 1)">6</span>, <span style="color: rgba(128, 0, 128, 1)">6</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标显示位置偏移量,基准点为图标左上角</span>
size: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">11</span>, <span style="color: rgba(128, 0, 128, 1)">11</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标的尺寸</span>
zIndex: <span style="color: rgba(128, 0, 128, 1)">1</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">每种样式图标的叠加顺序,数字越大越靠前</span>
<span style="color: rgba(0, 0, 0, 1)"> },
{
url: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://a.amap.com/jsapi_demos/static/images/mass1.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
anchor: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(<span style="color: rgba(128, 0, 128, 1)">4</span>, <span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)">),
size: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">11</span>,<span style="color: rgba(128, 0, 128, 1)">11</span><span style="color: rgba(0, 0, 0, 1)">),
zIndex: </span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">,
},
{
url: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">//vdata.amap.com/icons/b18/1/2.png</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标地址</span>
anchor: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(<span style="color: rgba(128, 0, 128, 1)">4</span>, <span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)">),
size: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">11</span>,<span style="color: rgba(128, 0, 128, 1)">11</span><span style="color: rgba(0, 0, 0, 1)">),
zIndex: </span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">,
},
];
</span><span style="color: rgba(0, 0, 255, 1)">var</span> massMarks = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.MassMarks(data,{
zIndex: </span><span style="color: rgba(128, 0, 128, 1)">5</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">海量点图层叠加的顺序</span>
zooms: [<span style="color: rgba(128, 0, 128, 1)">3</span>, <span style="color: rgba(128, 0, 128, 1)">19</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">在指定地图缩放级别范围内展示海量点图层</span>
style: style, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置样式对象</span>
<span style="color: rgba(0, 0, 0, 1)"> });
massMarks.setMap(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map);
}).</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((e) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(e);
});
},
},
};
</span></script>
<style scoped><span style="color: rgba(0, 0, 0, 1)">
#container {
width: </span><span style="color: rgba(128, 0, 128, 1)">100</span>%<span style="color: rgba(0, 0, 0, 1)">;
height: 100vh;
}
</span></style></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2024.cnblogs.com/blog/2138872/202404/2138872-20240407154552290-1261241964.png" alt="" width="526" height="368" loading="lazy"></p>
<p>单击海量点放大显示</p>
<div class="cnblogs_code">
<pre><template>
<div id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span>></div>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
import AMapLoader </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">@amap/amap-jsapi-loader</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
let that
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">map-view</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
mounted() {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.initAMap();
},
unmounted() {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map?<span style="color: rgba(0, 0, 0, 1)">.destroy();
},
data() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
lightMark:</span><span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">,
}
},
created() {
that</span>=<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">
},
methods: {
initAMap() {
window._AMapSecurityConfig </span>=<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
AMapLoader.load({
key: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">key</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 申请好的Web端开发者Key,首次调用 load 时必填</span>
version: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.4.15</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15</span>
plugins: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Autocomplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Scale</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.OverView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.ToolBar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MapType</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PolyEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.CircleEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 需要使用的的插件列表,如比例尺'AMap.Scale'等</span>
}).then((AMap) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
mapStyle: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">amap://styles/whitesmoke</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置地图的显示样式</span>
viewMode: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化</span>
center: [<span style="color: rgba(128, 0, 128, 1)">116.397428</span>, <span style="color: rgba(128, 0, 128, 1)">39.90923</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置</span>
zoom: <span style="color: rgba(128, 0, 128, 1)">12</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图级别</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 0, 255, 1)">var</span> data =<span style="color: rgba(0, 0, 0, 1)"> [
{
lnglat: [</span><span style="color: rgba(128, 0, 128, 1)">116.402394</span>,<span style="color: rgba(128, 0, 128, 1)">39.937182</span><span style="color: rgba(0, 0, 0, 1)">],
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">南锣鼓巷</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
style: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">,
type: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">商圈</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
},
{
lnglat: [</span><span style="color: rgba(128, 0, 128, 1)">116.427377</span>,<span style="color: rgba(128, 0, 128, 1)">39.902717</span><span style="color: rgba(0, 0, 0, 1)">],
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">北京站</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
style: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,
type: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">火车站</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
},
{
lnglat: [</span><span style="color: rgba(128, 0, 128, 1)">116.315457</span>,<span style="color: rgba(128, 0, 128, 1)">39.959982</span><span style="color: rgba(0, 0, 0, 1)">],
name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">北京理工大学</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
style: </span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">,
type: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">大学</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
},
];
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建样式对象,JS API 2.0支持显示设置 zIndex, zIndex 越大约靠前,默认按顺序排列</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> style =<span style="color: rgba(0, 0, 0, 1)"> [
{
url: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://a.amap.com/jsapi_demos/static/images/mass0.png</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标地址</span>
anchor: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(<span style="color: rgba(128, 0, 128, 1)">6</span>, <span style="color: rgba(128, 0, 128, 1)">6</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标显示位置偏移量,基准点为图标左上角</span>
size: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">11</span>, <span style="color: rgba(128, 0, 128, 1)">11</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标的尺寸</span>
zIndex: <span style="color: rgba(128, 0, 128, 1)">1</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">每种样式图标的叠加顺序,数字越大越靠前</span>
<span style="color: rgba(0, 0, 0, 1)"> },
{
url: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://a.amap.com/jsapi_demos/static/images/mass1.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
anchor: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(<span style="color: rgba(128, 0, 128, 1)">4</span>, <span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)">),
size: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">11</span>,<span style="color: rgba(128, 0, 128, 1)">11</span><span style="color: rgba(0, 0, 0, 1)">),
zIndex: </span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">,
},
{
url: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://vdata.amap.com/icons/b18/1/2.png</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标地址</span>
anchor: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(<span style="color: rgba(128, 0, 128, 1)">4</span>, <span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)">),
size: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">11</span>,<span style="color: rgba(128, 0, 128, 1)">11</span><span style="color: rgba(0, 0, 0, 1)">),
zIndex: </span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">,
},
];
</span><span style="color: rgba(0, 0, 255, 1)">var</span> massMarks = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.MassMarks(data,{
zIndex: </span><span style="color: rgba(128, 0, 128, 1)">5</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">海量点图层叠加的顺序</span>
zooms: [<span style="color: rgba(128, 0, 128, 1)">3</span>, <span style="color: rgba(128, 0, 128, 1)">19</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">在指定地图缩放级别范围内展示海量点图层</span>
style: style, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置样式对象</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 海量点单击事件</span>
<span style="color: rgba(255, 0, 0, 1)">massMarks.on('click', function(event) {
let data = event</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)">.data;
that.highlight(data);
});</span>
massMarks.setMap(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map);
}).</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((e) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(e);
});
},
<span style="color: rgba(255, 0, 0, 1)">highlight(data){
AMapLoader.load({
key: </span></span><span style="color: rgba(255, 0, 0, 1)">"key", // 申请好的Web端开发者Key,首次调用 load 时必填
version: "1.4.15", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
plugins: [], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
}).then((AMap) => {
let image;
if(data.type == "商圈"){
image = 'https://a.amap.com/jsapi_demos/static/images/mass0.png';
}else if(data.type == "火车站"){
image = 'https://a.amap.com/jsapi_demos/static/images/mass1.png';
}else if(data.type == "大学"){
image = 'https://vdata.amap.com/icons/b18/1/2.png';
}
let icon = new AMap.Icon({
image: image,
imageSize: new AMap.Size(30, 30)
});
this.lightMark = new AMap.Marker({
position: new AMap.LngLat(data.lnglat.lng, data.lnglat.lat),
offset: new AMap.Pixel(-15, -15),
icon: icon,
title: data.name
});
this.map.add(this.lightMark);
}).catch((e) =></span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)"> {
console.log(e);
});
}
},</span>
};
</span></script>
<style scoped><span style="color: rgba(0, 0, 0, 1)">
#container {
width: </span><span style="color: rgba(128, 0, 128, 1)">100</span>%<span style="color: rgba(0, 0, 0, 1)">;
height: 100vh;
}
</span></style></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2024.cnblogs.com/blog/2138872/202404/2138872-20240430100959929-305773774.gif" alt="" loading="lazy"></p>
<p> </p>
<h3>五、圆与椭圆</h3>
<p>2、画圆</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> circle = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Circle({
center: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">114.31667</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">30.51667</span><span style="color: rgba(128, 0, 0, 1)">"</span>), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 圆心位置</span>
radius: <span style="color: rgba(128, 0, 128, 1)">10000</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">半径</span>
strokeColor: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#F33</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">线颜色</span>
strokeOpacity: <span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">线透明度</span>
strokeWeight: <span style="color: rgba(128, 0, 128, 1)">3</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">线粗细度</span>
fillColor: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#ee2200</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">填充颜色</span>
fillOpacity: <span style="color: rgba(128, 0, 128, 1)">0.35</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">填充透明度</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map.add();</pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114115649037-914057248.png" alt="" width="767" height="371" loading="lazy"></p>
<p>删除圆</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map.remove(circle);</pre>
</div>
<p>注意:删除覆盖物时,由于覆盖物是先放到数组中,再加载到地图的,所以再删除上一个覆盖物时,要删除覆盖物所在的数组,而不是删除覆盖物。</p>
<p>例子如下:</p>
<p>比如:画圆如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.lightCircle = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Circle({
center: center,
radius: radiusValue,
strokeColor: circleStrokeColor,
strokeOpacity: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,
strokeWeight: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,
fillColor: circleColor,
fillOpacity: </span><span style="color: rgba(128, 0, 128, 1)">0.35</span><span style="color: rgba(0, 0, 0, 1)">
});
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.circleGraphics1.push(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.lightCircle);
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map.add(<span style="color: rgba(0, 0, 255, 1)">this</span>.circleGraphics1);</pre>
</div>
<p>那么删除圆时,要删除circleGraphics1数组,而不是删除lightCircle,删除lightCircle会失效。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">this</span>.circleGraphics1.length > <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map.remove(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.circleGraphics1);
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.circleGraphics1 =<span style="color: rgba(0, 0, 0, 1)"> [];
}</span></pre>
</div>
<p>3、使用工具类MouseTool画圆</p>
<div class="cnblogs_code">
<pre>window._AMapSecurityConfig =<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode: </span><span style="color: rgba(128, 0, 0, 1)">'安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
AMapLoader.load({
key: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">key</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 申请好的Web端开发者Key,首次调用 load 时必填</span>
version: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.4.15</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15</span>
plugins: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.AutoComplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Scale</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.OverView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.ToolBar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MapType</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PolyEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.CircleEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.RangingTool</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MouseTool</span><span style="color: rgba(128, 0, 0, 1)">'</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 需要使用的的插件列表,如比例尺'AMap.Scale'等</span>
}).then((AMap) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> lang: "en", </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可选值:en,zh_en, zh_cn
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zoom: 11, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> defaultCursor:'pointer',</span>
showLabel:<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
dragEnable: </span><span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过鼠标拖拽平移,默认为true</span>
keyboardEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可通过键盘控制,默认为true</span>
doubleClickZoom: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过双击鼠标放大地图,默认为true</span>
zoomEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可缩放,默认值为true</span>
rotateEnable: <span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可旋转,3D视图默认为true,2D视图默认false</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(255, 0, 0, 1)">var mouseTool = new AMap.MouseTool(this.map);
mouseTool.circle({
fillColor:'#00b0ff',
strokeColor:'#80d8ff'
//同Circle的Option设置
});</span><span style="color: rgba(0, 0, 0, 1)">
})
.</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((e) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(e);
});</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114155459668-1075038999.png" alt="" width="727" height="352" loading="lazy"></p>
<p>清除圆</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map.on(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">click</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, function(e) {
<span style="color: rgba(255, 0, 0, 1)">mouseTool.close(</span></span><span style="color: rgba(255, 0, 0, 1)">true)//关闭,并清除覆盖物</span>
});</pre>
</div>
<p>4、AMap.Ellipse画椭圆</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> ellipse = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Ellipse({
center: [</span><span style="color: rgba(128, 0, 128, 1)">114.398967</span>, <span style="color: rgba(128, 0, 128, 1)">30.505958</span><span style="color: rgba(0, 0, 0, 1)">],
radius: [ </span><span style="color: rgba(128, 0, 128, 1)">2000</span>, <span style="color: rgba(128, 0, 128, 1)">1000</span> ], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">半径</span>
borderWeight: <span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">,
strokeColor: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#FF33FF</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
strokeWeight: </span><span style="color: rgba(128, 0, 128, 1)">6</span><span style="color: rgba(0, 0, 0, 1)">,
strokeOpacity: </span><span style="color: rgba(128, 0, 128, 1)">0.2</span><span style="color: rgba(0, 0, 0, 1)">,
fillOpacity: </span><span style="color: rgba(128, 0, 128, 1)">0.4</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 线样式还支持 'dashed'</span>
strokeStyle: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">dashed</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
strokeDasharray: [</span><span style="color: rgba(128, 0, 128, 1)">10</span>, <span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">],
fillColor: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#1791fc</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
zIndex: </span><span style="color: rgba(128, 0, 128, 1)">50</span><span style="color: rgba(0, 0, 0, 1)">,
})
ellipse.setMap(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map)
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 缩放地图到合适的视野级别</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.map.setFitView([ ellipse ])</pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231115095032910-1663895720.png" alt="" width="781" height="373" loading="lazy"></p>
<h3>六、使用工具类测距</h3>
<p>官方文档:https://developer.amap.com/demo/javascript-api/example/mouse-operate-map/measure-distance</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114152839983-846854625.png" alt="" width="762" height="447" loading="lazy"></p>
<p>1、使用RangingTool工具类测距-----默认样式测距</p>
<div class="cnblogs_code">
<pre>window._AMapSecurityConfig =<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
AMapLoader.load({
key: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">key</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 申请好的Web端开发者Key,首次调用 load 时必填</span>
version: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.4.15</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15</span>
plugins: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.AutoComplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Scale</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.OverView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.ToolBar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MapType</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PolyEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.CircleEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(255, 0, 0, 1)">'AMap.RangingTool'</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 需要使用的的插件列表,如比例尺'AMap.Scale'等</span>
}).then((AMap) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> lang: "en", </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可选值:en,zh_en, zh_cn
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zoom: 11, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> defaultCursor:'pointer',</span>
showLabel:<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
dragEnable: </span><span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过鼠标拖拽平移,默认为true</span>
keyboardEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可通过键盘控制,默认为true</span>
doubleClickZoom: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过双击鼠标放大地图,默认为true</span>
zoomEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可缩放,默认值为true</span>
rotateEnable: <span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可旋转,3D视图默认为true,2D视图默认false</span>
<span style="color: rgba(0, 0, 0, 1)"> });</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">默认样式</span>
<span style="color: rgba(255, 0, 0, 1)">var ruler1 = new AMap.RangingTool(this.map);
ruler1.turnOn();
</span><span style="color: rgba(0, 0, 0, 1)">
})
.</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((e) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(e);
});
},</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114152446269-1077664800.png" alt="" width="763" height="368" loading="lazy"></p>
<p>2、使用RangingTool工具类测距-------自定义样式测距</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">自定义样式</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> startMarkerOptions=<span style="color: rgba(0, 0, 0, 1)"> {
icon: </span><span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Icon({
size: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">19</span>, <span style="color: rgba(128, 0, 128, 1)">31</span>),<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标大小</span>
imageSize:<span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">19</span>, <span style="color: rgba(128, 0, 128, 1)">31</span><span style="color: rgba(0, 0, 0, 1)">),
image: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://webapi.amap.com/theme/v1.3/markers/b/start.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
})
};
</span><span style="color: rgba(0, 0, 255, 1)">var</span> endMarkerOptions =<span style="color: rgba(0, 0, 0, 1)"> {
icon: </span><span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Icon({
size: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">19</span>, <span style="color: rgba(128, 0, 128, 1)">31</span>),<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标大小</span>
imageSize:<span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">19</span>, <span style="color: rgba(128, 0, 128, 1)">31</span><span style="color: rgba(0, 0, 0, 1)">),
image: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://webapi.amap.com/theme/v1.3/markers/b/end.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
}),
offset: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(-<span style="color: rgba(128, 0, 128, 1)">9</span>, -<span style="color: rgba(128, 0, 128, 1)">31</span><span style="color: rgba(0, 0, 0, 1)">)
};
</span><span style="color: rgba(0, 0, 255, 1)">var</span> midMarkerOptions =<span style="color: rgba(0, 0, 0, 1)"> {
icon: </span><span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Icon({
size: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">19</span>, <span style="color: rgba(128, 0, 128, 1)">31</span>),<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标大小</span>
imageSize:<span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">19</span>, <span style="color: rgba(128, 0, 128, 1)">31</span><span style="color: rgba(0, 0, 0, 1)">),
image: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://webapi.amap.com/theme/v1.3/markers/b/mid.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
}),
offset: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(-<span style="color: rgba(128, 0, 128, 1)">9</span>, -<span style="color: rgba(128, 0, 128, 1)">31</span><span style="color: rgba(0, 0, 0, 1)">)
};
</span><span style="color: rgba(0, 0, 255, 1)">var</span> lineOptions =<span style="color: rgba(0, 0, 0, 1)"> {
strokeStyle: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">solid</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
strokeColor: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#FF33FF</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
strokeOpacity: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,
strokeWeight: </span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">
};
</span><span style="color: rgba(0, 0, 255, 1)">var</span> rulerOptions =<span style="color: rgba(0, 0, 0, 1)"> {
startMarkerOptions: startMarkerOptions,
midMarkerOptions:midMarkerOptions,
endMarkerOptions: endMarkerOptions,
lineOptions: lineOptions
};
</span><span style="color: rgba(0, 0, 255, 1)">var</span> ruler2 = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.RangingTool(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map, rulerOptions);
ruler2.turnOn();</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114152636938-107351844.png" alt="" width="779" height="376" loading="lazy"></p>
<p>3、使用MouseTool工具类测距------MouseTool</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> mouseTool = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.MouseTool(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map);
mouseTool.rule({
startMarkerOptions: {</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可缺省</span>
icon: <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Icon({
size: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">19</span>, <span style="color: rgba(128, 0, 128, 1)">31</span>),<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标大小</span>
imageSize: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">19</span>, <span style="color: rgba(128, 0, 128, 1)">31</span><span style="color: rgba(0, 0, 0, 1)">),
image: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://webapi.amap.com/theme/v1.3/markers/b/start.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
})
},
endMarkerOptions: {</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可缺省</span>
icon: <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Icon({
size: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">19</span>, <span style="color: rgba(128, 0, 128, 1)">31</span>),<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标大小</span>
imageSize: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">19</span>, <span style="color: rgba(128, 0, 128, 1)">31</span><span style="color: rgba(0, 0, 0, 1)">),
image: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://webapi.amap.com/theme/v1.3/markers/b/end.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
}),
offset: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(-<span style="color: rgba(128, 0, 128, 1)">9</span>, -<span style="color: rgba(128, 0, 128, 1)">31</span><span style="color: rgba(0, 0, 0, 1)">)
},
midMarkerOptions: {</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可缺省</span>
icon: <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Icon({
size: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">19</span>, <span style="color: rgba(128, 0, 128, 1)">31</span>),<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">图标大小</span>
imageSize: <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">19</span>, <span style="color: rgba(128, 0, 128, 1)">31</span><span style="color: rgba(0, 0, 0, 1)">),
image: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://webapi.amap.com/theme/v1.3/markers/b/mid.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
}),
offset: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(-<span style="color: rgba(128, 0, 128, 1)">9</span>, -<span style="color: rgba(128, 0, 128, 1)">31</span><span style="color: rgba(0, 0, 0, 1)">)
},
lineOptions: {</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可缺省</span>
strokeStyle: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">solid</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
strokeColor: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#FF33FF</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
strokeOpacity: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,
strokeWeight: </span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">
}
})</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114161108503-99337846.png" alt="" width="774" height="375" loading="lazy"></p>
<h3>七、画多段线polyline</h3>
<p>官方文档位置</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231115092758447-1348828232.png" alt="" width="807" height="467" loading="lazy"></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> path =<span style="color: rgba(0, 0, 0, 1)"> [
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.284631</span>,<span style="color: rgba(128, 0, 128, 1)">30.48042</span><span style="color: rgba(0, 0, 0, 1)">),
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.367657</span>,<span style="color: rgba(128, 0, 128, 1)">30.532678</span><span style="color: rgba(0, 0, 0, 1)">),
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.36716</span>,<span style="color: rgba(128, 0, 128, 1)">30.453424</span><span style="color: rgba(0, 0, 0, 1)">),
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.445712</span>,<span style="color: rgba(128, 0, 128, 1)">30.490703</span><span style="color: rgba(0, 0, 0, 1)">)
];
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 创建折线实例</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> polyline = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Polyline({
path: path,
borderWeight: </span><span style="color: rgba(128, 0, 128, 1)">2</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 线条宽度,默认为 1</span>
strokeColor: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">red</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 线条颜色</span>
lineJoin: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">round</span><span style="color: rgba(128, 0, 0, 1)">'</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 折线拐点连接处样式</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 将折线添加至地图实例</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.map.add(polyline);</pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231115093225069-1766920436.png" alt="" width="800" height="382" loading="lazy"></p>
<p>删除多段线</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 移除一条已创建的折线</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.map.remove(polyline);</pre>
</div>
<p>一次性移除多条已创建的折线</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> polylines =<span style="color: rgba(0, 0, 0, 1)"> ;
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map.remove(polylines);</pre>
</div>
<p>折线的显示与隐藏</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 显示一条已创建的 polyline</span>
<span style="color: rgba(0, 0, 0, 1)">polyline.show();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 隐藏一条已创建的 polyline</span>
polyline.hide();</pre>
</div>
<p>2、使用工具类MouseTool画多段线</p>
<div class="cnblogs_code">
<pre>window._AMapSecurityConfig =<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode: </span><span style="color: rgba(128, 0, 0, 1)">'安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
AMapLoader.load({
key: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">key</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 申请好的Web端开发者Key,首次调用 load 时必填</span>
version: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.4.15</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15</span>
plugins: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.AutoComplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Scale</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.OverView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.ToolBar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MapType</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PolyEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.CircleEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.RangingTool</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(255, 0, 0, 1)">'AMap.MouseTool'</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 需要使用的的插件列表,如比例尺'AMap.Scale'等</span>
}).then((AMap) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> lang: "en", </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可选值:en,zh_en, zh_cn
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zoom: 11, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> defaultCursor:'pointer',</span>
showLabel:<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
dragEnable: </span><span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过鼠标拖拽平移,默认为true</span>
keyboardEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可通过键盘控制,默认为true</span>
doubleClickZoom: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过双击鼠标放大地图,默认为true</span>
zoomEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可缩放,默认值为true</span>
rotateEnable: <span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可旋转,3D视图默认为true,2D视图默认false</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(255, 0, 0, 1)">var mouseTool = new AMap.MouseTool(this.map);
mouseTool.polyline({
strokeColor:'#80d8ff'
//同Polyline的Option设置
});
</span><span style="color: rgba(0, 0, 0, 1)">
})
.</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((e) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(e);
});</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114154537354-1633331027.png" alt="" width="769" height="369" loading="lazy"></p>
<p>3、多段线的编辑</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 折线的节点坐标数组,每个元素为 AMap.LngLat 对象</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> path =<span style="color: rgba(0, 0, 0, 1)"> [
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.284631</span>,<span style="color: rgba(128, 0, 128, 1)">30.48042</span><span style="color: rgba(0, 0, 0, 1)">),
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.367657</span>,<span style="color: rgba(128, 0, 128, 1)">30.532678</span><span style="color: rgba(0, 0, 0, 1)">),
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.36716</span>,<span style="color: rgba(128, 0, 128, 1)">30.453424</span><span style="color: rgba(0, 0, 0, 1)">),
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.445712</span>,<span style="color: rgba(128, 0, 128, 1)">30.490703</span><span style="color: rgba(0, 0, 0, 1)">)
];
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 创建折线实例</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> polyline = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Polyline({
path: path,
isOutline: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
outlineColor: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#ffeeff</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
borderWeight: </span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">,
strokeColor: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#3366FF</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
strokeOpacity: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,
strokeWeight: </span><span style="color: rgba(128, 0, 128, 1)">6</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 折线样式还支持 'dashed'</span>
strokeStyle: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">solid</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> strokeStyle是dashed时有效</span>
strokeDasharray: [<span style="color: rgba(128, 0, 128, 1)">10</span>, <span style="color: rgba(128, 0, 128, 1)">5</span><span style="color: rgba(0, 0, 0, 1)">],
lineJoin: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">round</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
lineCap: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">round</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
zIndex: </span><span style="color: rgba(128, 0, 128, 1)">50</span><span style="color: rgba(0, 0, 0, 1)">,
})
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 将折线添加至地图实例</span>
polyline.setMap(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map)
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 缩放地图到合适的视野级别</span>
<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map.setFitView([ polyline ])
</span><span style="color: rgba(0, 0, 255, 1)">var</span> polyEditor = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.PolyEditor(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map, polyline)
polyEditor.open()
polyEditor.on(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">addnode</span><span style="color: rgba(128, 0, 0, 1)">'</span>, function(<span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)">) {
console.info(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">触发事件:addnode</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
})
polyEditor.on(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">adjust</span><span style="color: rgba(128, 0, 0, 1)">'</span>, function(<span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)">) {
console.info(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">触发事件:adjust</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
})
polyEditor.on(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">removenode</span><span style="color: rgba(128, 0, 0, 1)">'</span>, function(<span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)">) {
console.info(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">触发事件:removenode</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
})
polyEditor.on(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">end</span><span style="color: rgba(128, 0, 0, 1)">'</span>, function(<span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)">) {
console.info(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">触发事件: end</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> event.target 即为编辑后的折线对象</span>
})</pre>
</div>
<p>效果:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231115095936007-249581046.png" alt="" width="795" height="381" loading="lazy"></p>
<h3>八、画多边形polygon</h3>
<p>1、AMap.Polygon 对象创建多边形</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 多边形轮廓线的节点坐标数组</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> path =<span style="color: rgba(0, 0, 0, 1)"> [
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.378244</span>,<span style="color: rgba(128, 0, 128, 1)">30.693383</span><span style="color: rgba(0, 0, 0, 1)">),
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.172219</span>,<span style="color: rgba(128, 0, 128, 1)">30.626681</span><span style="color: rgba(0, 0, 0, 1)">),
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.27127</span>,<span style="color: rgba(128, 0, 128, 1)">30.468749</span><span style="color: rgba(0, 0, 0, 1)">),
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.45805</span>,<span style="color: rgba(128, 0, 128, 1)">30.478506</span><span style="color: rgba(0, 0, 0, 1)">)
];
</span><span style="color: rgba(0, 0, 255, 1)">var</span> polygon = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Polygon({
path: path,
fillColor: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#fff</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 多边形填充颜色</span>
borderWeight: <span style="color: rgba(128, 0, 128, 1)">2</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 线条宽度,默认为 1</span>
strokeColor: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">red</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 线条颜色</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map.add(polygon);</pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231115094007139-1633959631.png" alt="" width="788" height="377" loading="lazy"></p>
<p>2、使用工具类MouseTool画多边形</p>
<div class="cnblogs_code">
<pre>window._AMapSecurityConfig =<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode: </span><span style="color: rgba(128, 0, 0, 1)">'安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
AMapLoader.load({
key: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">key</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 申请好的Web端开发者Key,首次调用 load 时必填</span>
version: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">1.4.15</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15</span>
plugins: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.AutoComplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Scale</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.OverView</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.ToolBar</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MapType</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PolyEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.CircleEditor</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.RangingTool</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.MouseTool</span><span style="color: rgba(128, 0, 0, 1)">'</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 需要使用的的插件列表,如比例尺'AMap.Scale'等</span>
}).then((AMap) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> lang: "en", </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可选值:en,zh_en, zh_cn
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zoom: 11, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> defaultCursor:'pointer',</span>
showLabel:<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
dragEnable: </span><span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过鼠标拖拽平移,默认为true</span>
keyboardEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可通过键盘控制,默认为true</span>
doubleClickZoom: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过双击鼠标放大地图,默认为true</span>
zoomEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可缩放,默认值为true</span>
rotateEnable: <span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可旋转,3D视图默认为true,2D视图默认false</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(255, 0, 0, 1)">var mouseTool = new AMap.MouseTool(this.map);
mouseTool.polygon({
fillColor:'#00b0ff',
strokeColor:'#80d8ff'
//同Polygon的Option设置
});</span><span style="color: rgba(0, 0, 0, 1)">
})
.</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((e) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(e);
});</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114154750324-1791017223.png" alt="" width="754" height="363" loading="lazy"></p>
<p>2、使用工具类MouseTool画矩形</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> mouseTool = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.MouseTool(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">监听draw事件可获取画好的覆盖物</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> overlays =<span style="color: rgba(0, 0, 0, 1)"> [];
mouseTool.on(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">draw</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,function(e){
overlays.push(e.obj);
})
mouseTool.rectangle({
fillColor:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#00b0ff</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
strokeColor:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#80d8ff</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">同Polygon的Option设置</span>
});</pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114155042663-1419654852.png" alt="" width="763" height="369" loading="lazy"></p>
<p>3、AMap.Rectangle画矩形</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> southWest = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.402449</span>, <span style="color: rgba(128, 0, 128, 1)">30.520478</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 0, 255, 1)">var</span> northEast = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.435461</span>, <span style="color: rgba(128, 0, 128, 1)">30.506198</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 0, 255, 1)">var</span> bounds = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Bounds(southWest, northEast)
</span><span style="color: rgba(0, 0, 255, 1)">var</span> rectangle = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Rectangle({
bounds: bounds,
strokeColor:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">red</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
strokeWeight: </span><span style="color: rgba(128, 0, 128, 1)">6</span><span style="color: rgba(0, 0, 0, 1)">,
strokeOpacity:</span><span style="color: rgba(128, 0, 128, 1)">0.5</span><span style="color: rgba(0, 0, 0, 1)">,
strokeDasharray: [</span><span style="color: rgba(128, 0, 128, 1)">30</span>,<span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">],
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> strokeStyle还支持 solid</span>
strokeStyle: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">dashed</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
fillColor:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">blue</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
fillOpacity:</span><span style="color: rgba(128, 0, 128, 1)">0.5</span><span style="color: rgba(0, 0, 0, 1)">,
cursor:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">pointer</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
zIndex:</span><span style="color: rgba(128, 0, 128, 1)">50</span><span style="color: rgba(0, 0, 0, 1)">,
})
rectangle.setMap(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map)
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 缩放地图到合适的视野级别</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.map.setFitView([ rectangle ])</pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231115094626084-641976240.png" alt="" width="794" height="380" loading="lazy"></p>
<h3>九、使用工具类MouseTool拉框放大与拉框缩小</h3>
<p>我们一般使用滚轮对地图进行缩放,我们也可以通过拉矩形框的方式对地图进行缩放。</p>
<p>1、拉框放大</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> lang: "en", </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可选值:en,zh_en, zh_cn
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zoom: 11, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> defaultCursor:'pointer',</span>
showLabel:<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
dragEnable: </span><span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过鼠标拖拽平移,默认为true</span>
keyboardEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可通过键盘控制,默认为true</span>
doubleClickZoom: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过双击鼠标放大地图,默认为true</span>
zoomEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可缩放,默认值为true</span>
rotateEnable: <span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可旋转,3D视图默认为true,2D视图默认false</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(255, 0, 0, 1)">var mouseTool = new AMap.MouseTool(this.map);
mouseTool.rectZoomIn({
strokeColor:'#80d8ff',
fillColor:'#80d8ff',
fillOpacity:0.3
//同 Polygon 的 Option 设置
});</span></pre>
</div>
<p>2、拉框缩小</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> lang: "en", </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可选值:en,zh_en, zh_cn
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zoom: 11, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> defaultCursor:'pointer',</span>
showLabel:<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
dragEnable: </span><span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过鼠标拖拽平移,默认为true</span>
keyboardEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可通过键盘控制,默认为true</span>
doubleClickZoom: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过双击鼠标放大地图,默认为true</span>
zoomEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可缩放,默认值为true</span>
rotateEnable: <span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可旋转,3D视图默认为true,2D视图默认false</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(255, 0, 0, 1)">var mouseTool = new AMap.MouseTool(this.map);
mouseTool.rectZoomOut({
strokeColor:'#80d8ff',
fillColor:'#80d8ff',
fillOpacity:0.3
//同 Polygon 的 Option 设置
});</span></pre>
</div>
<h3>十、使用MouseTool工具类测面积</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> mouseTool = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.MouseTool(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map);
mouseTool.measureArea({
strokeColor:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#80d8ff</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
fillColor:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#80d8ff</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
fillOpacity:</span><span style="color: rgba(128, 0, 128, 1)">0.3</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">同 Polygon 的 Option 设置</span>
});</pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114161330365-2013295813.png" alt="" width="786" height="380" loading="lazy"></p>
<h3>十一、添加图层</h3>
<p>1、添加卫星图层</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> satelliteLayer = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.TileLayer.Satellite();
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map.add(satelliteLayer);</pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231114172755334-1346020157.png" alt="" width="782" height="375" loading="lazy"></p>
<p>删除卫星图层</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map.remove(satelliteLayer);</pre>
</div>
<p>2、添加路网图层</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> roadNetLayer =<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.TileLayer.RoadNet();
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.map.add(roadNetLayer);</pre>
</div>
<p>删除路网图层</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map.remove(roadNetLayer);</pre>
</div>
<h3>十二、坐标系转换</h3>
<p>1、经纬度转成容器像素坐标</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
viewMode: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">2D</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否为3D地图模式
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> resizeEnable: true, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否监控地图容器尺寸变化
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> lang: "en", </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">可选值:en,zh_en, zh_cn
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zoom: 11, </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图级别
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> zooms: , </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图允许缩放的层级</span>
center: [<span style="color: rgba(128, 0, 128, 1)">114.31667</span>, <span style="color: rgba(128, 0, 128, 1)">30.51667</span>], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 初始化地图中心点位置
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> defaultCursor:'pointer',</span>
showLabel: <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
showIndoorMap: </span><span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 是否在有矢量底图的时候自动展示室内地图,PC默认true,移动端默认false</span>
resizeEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">是否监控地图容器尺寸变化,默认值为false</span>
dragEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过鼠标拖拽平移,默认为true</span>
keyboardEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可通过键盘控制,默认为true</span>
doubleClickZoom: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可通过双击鼠标放大地图,默认为true</span>
zoomEnable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图是否可缩放,默认值为true</span>
rotateEnable: <span style="color: rgba(0, 0, 255, 1)">false</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 地图是否可旋转,3D视图默认为true,2D视图默认false</span>
<span style="color: rgba(0, 0, 0, 1)"> });</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.map.on(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">click</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, function(e) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> lnglat = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat());
</span><span style="color: rgba(0, 0, 255, 1)">var</span> pixel =<span style="color: rgba(0, 0, 0, 1)"> that.map.lngLatToContainer(lnglat);
console.log(pixel)</span>
});</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231115091927931-262946393.png" alt="" width="412" height="83" loading="lazy"></p>
<p>注意引入插件AMapLngLat,且回调函数内不能用this,可改用that。</p>
<p>2、容器像素坐标转成经纬度</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.map.on(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">click</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, function(e) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> lnglat = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat());
</span><span style="color: rgba(0, 0, 255, 1)">var</span> pixel =<span style="color: rgba(0, 0, 0, 1)"> that.map.lngLatToContainer(lnglat);
console.log(pixel)
</span><span style="color: rgba(0, 0, 255, 1)">var</span> pixel1 = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Pixel(pixel.x,pixel.y);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> lnglat =<span style="color: rgba(0, 0, 0, 1)"> that.map.containerToLngLat(pixel1);
console.log(lnglat)</span>
});</pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231115092327259-693725797.png" alt="" width="684" height="204" loading="lazy"></p>
<h3>十三、驾车路线规划</h3>
<p>驾车路线规划需要使用AMap.Driving插件,获取驾车路线规划一般有两种方式:<strong>经纬度</strong> 和 <strong>搜索关键字。</strong></p>
<p>1、经纬度</p>
<p>通过传入起点和终点的经纬度信息,获取对应的驾车路线规划。</p>
<p>(1)、准备一个panel div容器,<span style="color: rgba(255, 0, 0, 1)">放置导航数据</span>,绑定一个唯一的ID</p>
<div class="cnblogs_code">
<pre><div id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">panel</span><span style="color: rgba(128, 0, 0, 1)">"</span>></div></pre>
</div>
<p>(2)、构造导航类,输入起点和终点</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">构造路线导航类</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> driving = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Driving({
map: </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map,
panel: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">panel</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 绑定容器 id</span>
<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 根据起终点经纬度规划驾车导航路线</span>
driving.search(<span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.418656</span>, <span style="color: rgba(128, 0, 128, 1)">30.479686</span>), <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.446108</span>, <span style="color: rgba(128, 0, 128, 1)">30.517827</span><span style="color: rgba(0, 0, 0, 1)">), function(status, result) {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> result 即是对应的驾车导航信息,相关数据结构文档请参考</span><span style="color: rgba(0, 128, 0, 1); text-decoration: underline">https://lbs.amap.com/api/javascript-api/reference/route-search</span><span style="color: rgba(0, 128, 0, 1)">#m_DrivingResult</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> (status === <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">complete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">) {
console.log(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">绘制驾车路线完成</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
console.log(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">获取驾车数据失败:</span><span style="color: rgba(128, 0, 0, 1)">'</span> +<span style="color: rgba(0, 0, 0, 1)"> result)
}
});</span></pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231120145550203-2085803633.png" alt="" width="318" height="377" loading="lazy"></p>
<p>添加途经点</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> driving = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Driving({
map: </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map,
panel: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">panel</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
});
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 根据起终点经纬度规划驾车导航路线</span>
<span style="color: rgba(0, 0, 0, 1)"> driving.search(
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.418656</span>, <span style="color: rgba(128, 0, 128, 1)">30.479686</span><span style="color: rgba(0, 0, 0, 1)">),
</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.446108</span>, <span style="color: rgba(128, 0, 128, 1)">30.517827</span><span style="color: rgba(0, 0, 0, 1)">),
{
waypoints: [</span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.LngLat(<span style="color: rgba(128, 0, 128, 1)">114.448668</span>,<span style="color: rgba(128, 0, 128, 1)">30.506216</span><span style="color: rgba(0, 0, 0, 1)">)],
},
function (status, result) {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> result 即是对应的驾车导航信息,相关数据结构文档请参考</span><span style="color: rgba(0, 128, 0, 1); text-decoration: underline">https://lbs.amap.com/api/javascript-api/reference/route-search</span><span style="color: rgba(0, 128, 0, 1)">#m_DrivingResult</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> (status === <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">complete</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">) {
console.log(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">绘制驾车路线完成</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
console.log(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">获取驾车数据失败:</span><span style="color: rgba(128, 0, 0, 1)">"</span> +<span style="color: rgba(0, 0, 0, 1)"> result);
}
});</span></pre>
</div>
<p>结果:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231120152311627-1450482986.png" alt="" width="401" height="365" loading="lazy"></p>
<p> </p>
<p>2、地点关键字</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">构造路线导航类</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> driving = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Driving({
map: </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map,
panel: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">panel</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
});
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 根据起终点名称规划驾车导航路线</span>
<span style="color: rgba(0, 0, 0, 1)"> driving.search([
{keyword: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">光谷广场</span><span style="color: rgba(128, 0, 0, 1)">'</span>,city:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">武汉</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">},
{keyword: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">首创奥特莱斯</span><span style="color: rgba(128, 0, 0, 1)">'</span>,city:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">武汉</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">}
], function(status, result) {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> result 即是对应的驾车导航信息,相关数据结构文档请参考</span><span style="color: rgba(0, 128, 0, 1); text-decoration: underline">https://lbs.amap.com/api/javascript-api/reference/route-search</span><span style="color: rgba(0, 128, 0, 1)">#m_DrivingResult</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> (status === <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">complete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">) {
console.log(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">绘制驾车路线完成</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
console.log(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">获取驾车数据失败:</span><span style="color: rgba(128, 0, 0, 1)">'</span> +<span style="color: rgba(0, 0, 0, 1)"> result)
}
});</span></pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231120150248524-715585650.png" alt="" width="579" height="388" loading="lazy"></p>
<h3>十四、web服务 API-路径规划</h3>
<p>官方文档:https://lbs.amap.com/api/webservice/guide/api/direction/</p>
<p>路径规划API是一套以HTTP形式提供的步行、公交、驾车查询及行驶距离计算接口,返回JSON 或 XML格式的查询数据,用于实现路径规划功能的开发。 </p>
<p>由于道路/数据/算法的变更,很可能存在间隔一段时间后请求相同起终点的经纬度返回不同结果。</p>
<p>使用说明:</p>
<p data-spm-anchor-id="0.0.0.i5.75b69544BHAWq9">第一步,申请”Web服务API”密钥(Key);</p>
<p data-spm-anchor-id="0.0.0.i5.75b69544BHAWq9">注意:如果无法返回正常的数据,看是否是因为设置IP白名单。</p>
<p>第二步,拼接HTTP请求URL,第一步申请的Key需作为必填参数一同发送;</p>
<p>第三步,接收HTTP请求返回的数据(JSON或XML格式),解析数据。</p>
<div class="cnblogs_code">
<pre>@RunWith(SpringRunner.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">)
@SpringBootTest(classes </span>= ServerApplication.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> gaodeDemo {
@Test
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> test() {
String mapWebUrl </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://restapi.amap.com/v5/direction/driving?origin=start&destination=end&show_fields=polyline&key=你的key</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">double</span> startJd = <span style="color: rgba(128, 0, 128, 1)">108.957383</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">double</span> startWd = <span style="color: rgba(128, 0, 128, 1)">38.472747</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">double</span> endJd = <span style="color: rgba(128, 0, 128, 1)">108.884053</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">double</span> endWd = <span style="color: rgba(128, 0, 128, 1)">38.550073</span><span style="color: rgba(0, 0, 0, 1)">;
String url </span>= mapWebUrl.replace(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">start</span><span style="color: rgba(128, 0, 0, 1)">"</span>,startJd+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">,</span><span style="color: rgba(128, 0, 0, 1)">"</span>+startWd).replace(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">end</span><span style="color: rgba(128, 0, 0, 1)">"</span>,endJd+<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">,</span><span style="color: rgba(128, 0, 0, 1)">"</span>+<span style="color: rgba(0, 0, 0, 1)">endWd);
String resultStr </span>=<span style="color: rgba(0, 0, 0, 1)"> ApiUtils.getRequest(url);
JSONObject resultObj </span>=<span style="color: rgba(0, 0, 0, 1)"> JSONObject.parseObject(resultStr);
System.</span><span style="color: rgba(0, 0, 255, 1)">out</span><span style="color: rgba(0, 0, 0, 1)">.println(resultObj);
}
}</span></pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2024.cnblogs.com/blog/2138872/202404/2138872-20240412104844750-1732983168.png" alt="" width="458" height="670" loading="lazy"></p>
<p>其中step数组如下:</p>
<p><img src="https://img2024.cnblogs.com/blog/2138872/202404/2138872-20240412104943255-1233081077.png" alt="" width="1036" height="485" loading="lazy"></p>
<p>骑行路径规划</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">骑行导航</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> riding = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Riding({
map: </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.map,
panel: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">panel</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
});
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">根据起终点坐标规划骑行路线</span>
riding.search([<span style="color: rgba(128, 0, 128, 1)">114.418656</span>, <span style="color: rgba(128, 0, 128, 1)">30.479686</span>],[<span style="color: rgba(128, 0, 128, 1)">114.446108</span>, <span style="color: rgba(128, 0, 128, 1)">30.517827</span><span style="color: rgba(0, 0, 0, 1)">], function(status, result) {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> result即是对应的骑行路线数据信息,相关数据结构文档请参考</span><span style="color: rgba(0, 128, 0, 1); text-decoration: underline">https://lbs.amap.com/api/javascript-api/reference/route-search</span><span style="color: rgba(0, 128, 0, 1)">#m_RidingResult</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> (status === <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">complete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">) {
console.log(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">绘制骑行路线完成</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
console.log(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">骑行路线数据查询失败</span><span style="color: rgba(128, 0, 0, 1)">'</span> +<span style="color: rgba(0, 0, 0, 1)"> result)
}
});</span></pre>
</div>
<p>结果如下:</p>
<p><img src="https://img2023.cnblogs.com/blog/2138872/202311/2138872-20231120153854048-1546544865.png" alt="" width="419" height="369" loading="lazy"></p>
<h3>十五、高德地图POI搜索</h3>
<p>直接上代码</p>
<div class="cnblogs_code">
<pre><!doctype html>
<html>
<head>
<meta charset=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">utf-8</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<meta http-equiv=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">X-UA-Compatible</span><span style="color: rgba(128, 0, 0, 1)">"</span> content=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">IE=edge</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<meta name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">viewport</span><span style="color: rgba(128, 0, 0, 1)">"</span> content=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">initial-scale=1.0, user-scalable=no, width=device-width</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<title>输入提示后查询</title>
<link rel=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">stylesheet</span><span style="color: rgba(128, 0, 0, 1)">"</span> href=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://cache.amap.com/lbs/static/main1119.css</span><span style="color: rgba(128, 0, 0, 1)">"</span>/>
</head>
<body>
<div id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span>></div>
<div id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">myPageTop</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<table>
<tr>
<td>
<label>请输入关键字:</label>
</td>
</tr>
<tr>
<td>
<input id=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">tipinput</span><span style="color: rgba(128, 0, 0, 1)">"</span>/>
</td>
</tr>
</table>
</div>
<script type=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text/javascript</span><span style="color: rgba(128, 0, 0, 1)">"</span>><span style="color: rgba(0, 0, 0, 1)">
window._AMapSecurityConfig </span>=<span style="color: rgba(0, 0, 0, 1)"> {
securityJsCode:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">你的安全密钥</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
}
</span></script>
<script type=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text/javascript</span><span style="color: rgba(128, 0, 0, 1)">"</span> src=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https://webapi.amap.com/maps?v=1.4.15&key=你的key</span><span style="color: rgba(128, 0, 0, 1)">"</span>></script>
<script type=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text/javascript</span><span style="color: rgba(128, 0, 0, 1)">"</span>>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地图加载</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> map = <span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Map(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">container</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, {
resizeEnable: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
});
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">输入提示</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> autoOptions =<span style="color: rgba(0, 0, 0, 1)"> {
input: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">tipinput</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
};
AMap.plugin([</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.PlaceSearch</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AMap.Autocomplete</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">], function(){
</span><span style="color: rgba(0, 0, 255, 1)">var</span> auto = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Autocomplete(autoOptions);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> placeSearch = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.PlaceSearch({
map: map
});</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">构造地点查询类</span>
auto.on(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">select</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 0, 255, 1)">select</span>);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">注册监听,当选中某条记录时会触发</span>
function <span style="color: rgba(0, 0, 255, 1)">select</span><span style="color: rgba(0, 0, 0, 1)">(e) {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> placeSearch.setCity(e.poi.adcode);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> placeSearch.search(e.poi.name);</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">关键字查询查询</span>
<span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)">(e.poi.location){
let jd </span>=<span style="color: rgba(0, 0, 0, 1)"> e.poi.location.lng;
let wd </span>=<span style="color: rgba(0, 0, 0, 1)"> e.poi.location.lat;
let name </span>=<span style="color: rgba(0, 0, 0, 1)"> e.poi.name;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建起点</span>
let icon = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Icon({
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> image: '/homePage/location.svg',</span>
image: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">../assets/location.svg</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
imageSize: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Size(<span style="color: rgba(128, 0, 128, 1)">40</span>, <span style="color: rgba(128, 0, 128, 1)">40</span><span style="color: rgba(0, 0, 0, 1)">)
});
let marker </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.Marker({
position: </span><span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AMap.LngLat(jd, wd),
offset: </span><span style="color: rgba(0, 0, 255, 1)">new</span> AMap.Pixel(-<span style="color: rgba(128, 0, 128, 1)">20</span>, -<span style="color: rgba(128, 0, 128, 1)">20</span><span style="color: rgba(0, 0, 0, 1)">),
icon: icon,
title: name
});
let marksArr </span>=<span style="color: rgba(0, 0, 0, 1)"> [];
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">放入点图形数组</span>
<span style="color: rgba(0, 0, 0, 1)"> marksArr.push(marker);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">选中后在地图上画点</span>
<span style="color: rgba(0, 0, 0, 1)"> map.add(marksArr);
map.setZoomAndCenter(</span><span style="color: rgba(128, 0, 128, 1)">13</span><span style="color: rgba(0, 0, 0, 1)">, );
}
}
});
</span></script>
</body>
</html></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2024.cnblogs.com/blog/2138872/202409/2138872-20240910170433537-222955179.gif" alt="" width="1032" height="561" loading="lazy"></p>
<p>注意:2.0版本的话,用AMap.AutoComplete,这里用的是1.4.15,故只能用AMap.Autocomplete。</p>
<p><img src="https://img2024.cnblogs.com/blog/2138872/202409/2138872-20240910170502710-1694690474.png" alt="" loading="lazy"></p>
<h3>十六、高德地图坐标转换</h3>
<p>文档:https://lbs.amap.com/api/webservice/guide/api/convert</p>
<p><img src="https://img2024.cnblogs.com/blog/2138872/202409/2138872-20240910173901770-1293463836.png" alt="" width="993" height="570" loading="lazy"></p>
<p>坐标转换在线工具:https://tool.lu/coordinate/</p>
<h3>十七、高德地图逆地理编码</h3>
<p>将经纬度信息转换为省市区信息。API地址:https://lbs.amap.com/api/webservice/guide/api/georegeo</p>
<div class="cnblogs_code">
<pre>https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">restapi.amap.com/v3/geocode/regeo?location=116.310003,39.991957&key=<用户的key></span></pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/2138872/202411/2138872-20241112152035276-295300624.png" alt="" width="823" height="182" loading="lazy"></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/zwh0910/p/17829315.html
頁:
[1]