微信小程序 地圖map(電子圍欄圓形和多邊形)

正常情況下是沒有手機上畫電子圍欄的,公共平臺上我也沒找到,所以走了一個歪點子,就是給地圖添加點擊事件,記錄點的位置,在畫到電子圍欄上就是添加電子圍欄了,如果只是顯示電子圍欄就簡單了

一、多邊形電子圍欄

<view><map id="map" longitude="{{longitude}}" latitude="{{latitude}}" scale="13" bindtap="bindtapMap" markers="{{markers}}" polyline="{{polyline}}" polygons="{{polygons}}" show-location style="width: 100%; height: 80vh;"></map><button type="primary" bindtap="removePolygons">刪除圍欄</button>
</view>

?字段說明:

bindtapMap:地圖點擊方法

creatPolygons:點圖圍欄繪制方法

markers:顯示位置點

polygons:連線位置點


Page({data: {latitude: 24.463713,longitude: 118.082085,markers: [],polygons: [],},creatPolygons() {//創建多邊形圍欄if (this.data.markers.length < 3){return}let polygons = this.data.polygons;let markers = this.data.markers;let newArray = [];let params = {fillColor: "#1791fc66",strokeColor: "#FFF",strokeWidth: 2,zIndex: 3}for (let j = 0; j < markers.length; j++) {let obj = {latitude: markers[j].latitude,longitude: markers[j].longitude};newArray.push(obj);}polygons[0] = {};polygons[0].points = newArray;newArray = Object.assign(polygons[0], params);this.setData({"polygons[0]": newArray})},bindtapMap(e) {//創建標記點let tapPoint = e.detail;let markers = this.data.markerslet newContent = markers.lengthlet markerItem = {id: newContent,latitude: null,longitude: null,iconPath: '../img/point.png',width: '34px',height: '34px',rotate: 0,alpha: 1,zIndex: 3}markerItem.latitude = tapPoint.latitude;markerItem.longitude = tapPoint.longitude;markers.push(markerItem)this.setData({markers})this.creatPolygons()},removePolygons() {//刪除圍欄和標記this.setData({markers: [],polygons: []})},})

二、圓形電子圍欄

?

<view><map bindtap="bindtapMap" markers="{{markers}}" id="map" longitude="{{longitude}}" latitude="{{latitude}}" scale="13" circles="{{circles}}" style="width: 100%; height: 80vh;"></map><button type="primary" bindtap="removePolygons">刪除圍欄</button>
</view>

字段說明:bindtapMap:標記位置點。這和多邊形就不一樣了,我只需要兩個點,第一個點為圓形的中心,第二個點則為圓形的邊

distance:計算第一個點和第一個點的距離(以米為單位,如果要千米就 /1000)

markers:位置點顯示

circles:圓形圍欄顯示

Page({data: {latitude:39.90923,longitude: 116.397428,markers: [],circles: [],},removePolygons() {//刪除圍欄和標記this.setData({markers: [],circles: []})},bindtapMap(e) {//創建標記點let tapPoint = e.detail;let markers = this.data.markerslet newContent = markers.lengthlet markerItem = {id: newContent,latitude: null,longitude: null,iconPath: '../img/point.png',width: '34px',height: '34px',rotate: 0,alpha: 1,zIndex: 3}markerItem.latitude = tapPoint.latitude;markerItem.longitude = tapPoint.longitude;if (markers.length == 0) {markers.push(markerItem)this.setData({markers})} else {console.log(this.distance(markers[0].latitude,markers[0].longitude,markerItem.latitude,markerItem.longitude))this.setData({circles: [{latitude: markers[0].latitude,longitude: markers[0].longitude,fillColor: "#7cb5ec88",color: '#FF0000DD',radius: this.distance(markers[0].latitude,markers[0].longitude,markerItem.latitude,markerItem.longitude),}],})}},distance(la1, lo1, la2, lo2) {var La1 = la1 * Math.PI / 180.0;var La2 = la2 * Math.PI / 180.0;var La3 = La1 - La2;var Lb3 = lo1 * Math.PI / 180.0 - lo2 * Math.PI / 180.0;var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(La3 / 2), 2) + Math.cos(La1) * Math.cos(La2) * Math.pow(Math.sin(Lb3 / 2), 2)));s = s * 6378.137;s = Math.round(s * 1000);return s;},onLoad(options) {},})

所遇到的問題:

1.circles內我添加level無效,導致我看不到圍欄下面的地圖,我也沒解決他為啥不好使,所以我就給圍欄添加顏色時做了點手腳(?fillColor:?"#7cb5ec88",color:?'#FF0000DD')

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35190.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35190.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35190.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2023.8.12號論文閱讀

文章目錄 TriFormer: A Multi-modal Transformer Framework For Mild Cognitive Impairment Conversion Prediction摘要本文方法實驗結果 SwIPE: Efficient and Robust Medical Image Segmentation with Implicit Patch Embeddings摘要本文方法實驗結果 TriFormer: A Multi-mod…

macos搭建python3虛擬環境

我們知道macos自帶的python版本是Python2.7, 這個版本比較老而且往往和我們的工程不兼容&#xff0c;所以就得需要我們升級Python版本&#xff0c; 我們不建議直接升級macos自帶的本地Python2.7, 因為macos有一些基礎軟件是依賴于Python2.7的&#xff0c;如果動了遇到問題想再…

日志框架及其使用方法

log4j和logBack,同一個人寫的&#xff0c;logBack為log4j的升級版&#xff0c;SpringBoot中默認集成logBack 作用&#xff1a;記錄軟件發布后的一些bug,以及數據是怎樣被操作的 傳統開發弊端&#xff1a; 1.日志直接輸出在控制臺&#xff0c;關閉控制臺后&#xff0c;日志消…

Netty:在一個ByteBuf中尋找另外一個ByteBuf出現的位置

說明 利用ByteBufUtil的indexOf(ByteBuf needle, ByteBuf haystack)函數可以在haystack中尋找needle出現的位置。如果沒有找到&#xff0c;返回-1。 示例 在一個ByteBuf 中找到了另外一個ByteBuf package com.thb;import io.netty.buffer.ByteBuf; import io.netty.buffer.…

Linux: network: tools: tcpdump,抓取vlan包需要注意的事情;不然會出現LLC協議

https://bugzilla.redhat.com/show_bug.cgi?id498981#c4 https://serverfault.com/questions/544651/vlan-tags-not-shown-in-packet-capture-linux-via-tcpdump 如果不加-e參數&#xff0c;抓取不到 vlan信息&#xff0c;會導致wireshark解析出現問題。因為&#xff0c;抓到…

AirServer是什么軟件,手機屏幕投屏電腦神器

什么是 AirServer&#xff1f; AirServer 是適用于 Mac 和 PC 的先進的屏幕鏡像接收器。 它允許您接收 AirPlay 和 Google Cast 流&#xff0c;類似于 Apple TV 或 Chromecast 設備。AirServer 可以將一個簡單的大屏幕或投影儀變成一個通用的屏幕鏡像接收器 &#xff0c;是一款…

PDF Expert 3.3 for mac

PDF Expert是一款專業的PDF編輯和閱讀工具。它可以幫助用戶在Mac、iPad和iPhone等設備上查看、注釋、編輯、填寫和簽署PDF文檔。 以下是PDF Expert的特點&#xff1a; PDF編輯&#xff1a;PDF Expert提供了豐富的PDF編輯功能&#xff0c;包括添加、刪除、移動、旋轉、縮放、裁…

《貧窮的本質》閱讀筆記

《貧窮的本質》閱讀筆記 2023年8月11日在杭州小屋讀完&#xff0c;對于窮&#xff0c;我可有太多想說的了。可以說自己活這么大以來&#xff0c;一直在擺脫貧窮&#xff0c;也將會窮盡一生去避免貧窮。作為一個窮人該如何去擺脫貧窮&#xff0c;我覺得沒有一個確切的答案&#…

windows 安裝免費3用戶ccproxy ubuntu 代理上網

Windows 上進行安裝 ubuntu 上進行設置 方法一 (臨時的手段) 如果僅僅是暫時需要通過http代理使用apt-get&#xff0c;您可以使用這種方式。 在使用apt-get之前&#xff0c;在終端中輸入以下命令&#xff08;根據您的實際情況替換yourproxyaddress和proxyport&#xff09;。 終…

Linux防火墻firewalldiptables(2)iptables開放指定端口開放指定端口

一、CentOs6 iptables基本操作 # chkconfig --list | grep iptables 查看防火墻的服務 # chkconfig iptables off 永久關閉防火墻 #chkconfig iptables on 永久開啟防火墻# service status iptables 查看防火墻狀態 # service start iptables 啟動防火墻 # service stop ipta…

HCIA---路由器--靜態路由

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 目錄 前言 一.路由器簡介 二.路由器轉發原理 三.骨干鏈路 四.路由分類 五.靜態路由 六.靜態路由拓展配置 一.負載均衡 二.環回接口 三.手工匯總 四.路由黑洞 五.缺…

【分布式存儲】數據存儲和檢索~B+樹

為什么數據存儲結構重要 在存儲系統中&#xff0c;其實不管數據是什么樣的&#xff0c;歸根結底其實都還是取決于數據的底層存儲結構&#xff0c;而主要常見的就是數據庫索引結構&#xff0c;B樹、Redis中跳表、以及LSM、搜索引擎中的倒排索引。本質都是如何利用不用的數據結構…

軟件設計師(七)面向對象技術

面向對象&#xff1a; Object-Oriented&#xff0c; 是一種以客觀世界中的對象為中心的開發方法。 面向對象方法有Booch方法、Coad方法和OMT方法等。推出了同一建模語言UML。 面向對象方法包括面向對象分析、面向對象設計和面向對象實現。 一、面向對象基礎 1、面向對象的基本…

7. 延遲隊列

延遲隊列 7.1. 延遲隊列概念 延時隊列,隊列內部是有序的&#xff0c;最重要的特性就體現在它的延時屬性上&#xff0c;延時隊列中的元素是希望 在指定時間到了以后或之前取出和處理&#xff0c;簡單來說&#xff0c;延時隊列就是用來存放需要在指定時間被處理的 元素的隊列。 7…

【Spring Boot】構建RESTful服務 — 使用Swagger生成Web API文檔

使用Swagger生成Web API文檔 高質量的API文檔在系統開發的過程中非常重要。本節介紹什么是Swagger&#xff0c;如何在Spring Boot項目中集成Swagger構建RESTful API文檔&#xff0c;以及為Swagger配置Token等通用參數。 1.什么是Swagger Swagger是一個規范和完整的框架&…

QT創建項目

可選擇CMake或qmake

SSL證書DV和OV的區別?

SSL證書是在互聯網通信中保護數據傳輸安全的一種加密工具。它能夠確保客戶端和服務器之間的通信得以加密&#xff0c;防止第三方竊聽或篡改信息。在選擇SSL證書時&#xff0c;常見的有DV證書和OV證書&#xff0c;它們在驗證標準和信任級別上有所不同。那么SSL證書DV和OV的有哪些…

二叉搜索樹K和KV結構模擬

一 什么是二叉搜索樹 這個的結構特性非常重要&#xff0c;是后面函數實現的結構基礎&#xff0c;二叉搜索樹的特性是每個根節點都比自己的左樹任一節點大&#xff0c;比自己的右樹任一節點小。 例如這個圖&#xff0c; 41是根節點&#xff0c;要比左樹大&#xff0c;比右樹小&…

Neo4j之DELETE基礎

在 Neo4j 中&#xff0c;DELETE 語句用于刪除節點、關系或節點屬性。它允許從圖數據庫中移除不再需要的數據。 1】刪除節點及其關系&#xff1a; MATCH (p:Person {name: Alice}) DETACH DELETE p;這個查詢會找到具有 "Person" 標簽且屬性 "name" 為 &qu…

人工智能原理概述 - ChatGPT 背后的故事

大家好&#xff0c;我是比特桃。如果說 2023 年最火的事情是什么&#xff0c;毫無疑問就是由 ChatGPT 所引領的AI浪潮。今年無論是平日的各種媒體、工作中接觸到的項目還是生活中大家討論的熱點&#xff0c;都離不開AI。其實對于互聯網行業來說&#xff0c;自從深度學習出來后就…