国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

uniapp結(jié)合Canvas+renderjs根據(jù)經(jīng)緯度繪制軌跡(二)

這篇具有很好參考價值的文章主要介紹了uniapp結(jié)合Canvas+renderjs根據(jù)經(jīng)緯度繪制軌跡(二)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

uniapp結(jié)合Canvas+renderjs根據(jù)經(jīng)緯度繪制軌跡

?

  • 根據(jù)官方建議要想在 app-vue 流暢使用 Canvas 動畫,需要使用 renderjs 技術(shù),把操作canvas的js邏輯放到視圖層運行,避免邏輯層和視圖層頻繁通信。
  • 這里呢結(jié)合 renderjs 技術(shù)實現(xiàn)繪制軌跡圖形。

你可能需要先了解renderjs如何數(shù)據(jù)通訊:renderjs 與 app-vue之間數(shù)據(jù)交互

html中使用canvas根據(jù)經(jīng)緯度繪制軌跡


效果圖

uniapp結(jié)合Canvas+renderjs根據(jù)經(jīng)緯度繪制軌跡(二),uniapp,uniapp繪制軌跡,使用renderjs繪制軌跡,canvas繪制軌跡文章來源地址http://www.zghlxwxcb.cn/news/detail-672614.html


template

  • coordsAll 監(jiān)聽數(shù)據(jù)變化,只要 coordsAll 數(shù)據(jù)改變,就是觸發(fā) initData 方法。
 <template>
	<view class="map-track-wrap">
      	<!-- xxx -->
      	<view class="track-list" :prop="coordsAll" :change:prop="canvas.initData">
          	<!-- xxx -->
          <view class="d-flex canvas-box">
            	<canvas class="canvas" :class="`canvas${index}`"></canvas>
          </view>
       	</view>
    </view>
</template>

renderjs

<script module="canvas" lang="renderjs">
	export default {
		methods: {
			initData() {
				for (let i = 0; i < this.coordsAll.length; i++) {
					// 繪制圖形
					this.draw(this.coordsAll[i], i);
				}
			},
			draw(locationList, idx) {
				let canvasHeight = 72,
					canvasWidth = 72,
					canvasEle = document.querySelectorAll(`.canvas${idx}>canvas`)[0],
					ctx = canvasEle.getContext('2d'),
					amuXArr = [],
					amuYArr = []

				for (let i = 0; i < locationList.length; i++) {
					amuXArr.push(locationList[i].lat);
					amuYArr.push(locationList[i].lng);
				}
				
				amuYArr = amuYArr.map((item) => {
					return item * -1;
				});

				let xMax = Math.max(...amuXArr);
				let xMin = Math.min(...amuXArr);
				let yMax = Math.max(...amuYArr);
				let yMin = Math.min(...amuYArr);

				let xScale = canvasWidth / (xMax - xMin);
				let yScale = canvasHeight / (yMax - yMin);
				let scale = xScale < yScale ? xScale : yScale;

				let xoffset = (canvasWidth - (xMax - xMin) * scale) / 2;
				let yoffset = (canvasHeight - (yMax - yMin) * scale) / 2;
				
				ctx.save(); // 保存狀態(tài)
				ctx.translate(0, canvasHeight);
				ctx.rotate(-Math.PI / 2);
				ctx.beginPath();

				// 根據(jù)偏移量移動點位并畫圖
				ctx.moveTo(
					(amuXArr[0] - xMin) * scale + xoffset,
					(yMax - amuYArr[0]) * scale + yoffset
				);
				for (let i = 1; i < amuXArr.length; i++) {
					ctx.lineTo(
						(amuXArr[i] - xMin) * scale + xoffset,
						(yMax - amuYArr[i]) * scale + yoffset
					);
				}
				ctx.strokeStyle = '#1FE298';
				ctx.stroke();
				ctx.restore(); // 恢復(fù)狀態(tài)
			}
		}
	}
</script>

js

  • renderjs中不支持uni.request,所以請求后臺獲取數(shù)據(jù)操作在script中進(jìn)行,然后監(jiān)聽參數(shù)變化,將參數(shù)傳遞過來進(jìn)行渲染。
searchList() {      	
  	// 處理數(shù)據(jù)
  	let list = this.dataList;
  	if (list.length > 0) {
    	for(let i = 0; i < list.length; i++) {
      		let tmpLocation = list[i].locations;
         	// 頁面監(jiān)聽 coordsAll,把數(shù)據(jù)傳遞renderjs,會觸發(fā) initData 方法
      		this.coordsAll.push(JSON.parse(tmpLocation));
    	}
  	}
}

數(shù)據(jù)結(jié)構(gòu)

  • 測試數(shù)據(jù),具體根據(jù)個人所需處理數(shù)據(jù)
[
    {
        locations: [
          	{
                "lng": 113.980502,
                "lat": 22.54161
        	},
            {
              "lng": 113.972839,
              "lat": 22.533976
            },
            {
              "lng": 113.98925,
              "lat": 22.524669
            },
            {
              "lng": 113.990034,
              "lat": 22.537097
            },
            {
              "lng": 114.00916,
              "lat": 22.534477
            }
    	]
  	},
    {
      	locations: [
            {
              "lng": 113.924271,
              "lat": 22.537654
            },
            {
              "lng": 113.9367,
              "lat": 22.532806
            },
            {
              "lng": 113.928494,
              "lat": 22.518594
            },
            {
              "lng": 113.942673,
              "lat": 22.524502
            },
            {
              "lng": 113.944302,
              "lat": 22.538601
            }
    	]
  	},
  	{
      	locations: [
            {
                "lng": 113.98049,
                "lat": 22.54301
            },
            {
                "lng": 114.06374,
                "lat": 22.51134
            },
            {
                "lng": 114.06259,
                "lat": 22.50951
            },
            {
                "lng": 114.06178,
                "lat": 22.51031
            },
            {
                "lng": 113.96047,
                "lat": 22.54611
            }
       ]
  	}
]

到了這里,關(guān)于uniapp結(jié)合Canvas+renderjs根據(jù)經(jīng)緯度繪制軌跡(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • NC文件根據(jù)經(jīng)緯度提取點上數(shù)值

    NC文件根據(jù)經(jīng)緯度提取點上數(shù)值

    Hello,Hello,Hello,大家好,時隔上一次更新已經(jīng)很久了,今天主要和大家分享一組簡單的代碼,來提取NC文件中某一點的數(shù)值! 本次實例數(shù)據(jù)依舊使用喜聞樂見的NCEP數(shù)據(jù),數(shù)據(jù)使用的是多層氣溫?;蛘呖梢灾苯狱c擊這里下載 這個就是下載好的數(shù)據(jù): 大家可以看一下,這個數(shù)

    2024年02月05日
    瀏覽(34)
  • Python根據(jù)經(jīng)緯度在地圖上顯示(folium)

    Python根據(jù)經(jīng)緯度在地圖上顯示(folium)

    1、location地圖中心點 經(jīng)緯度,list 或者 tuple 格式,順序為 latitude(緯度), longitude(經(jīng)度) 2、zoom_start地圖等級 縮放值,默認(rèn)為 10,值越大比例尺越小,地圖放大級別越大 3、tiles 顯示樣式,默認(rèn)*‘OpenStreetMap’*,也就是開啟街道顯示;也有一些其他的內(nèi)建地圖樣式,如’Stamen T

    2024年02月14日
    瀏覽(42)
  • Java根據(jù)坐標(biāo)經(jīng)緯度計算兩點距離(5種方法)、校驗經(jīng)緯度是否在圓/多邊形區(qū)域內(nèi)的算法推薦

    Java根據(jù)坐標(biāo)經(jīng)緯度計算兩點距離(5種方法)、校驗經(jīng)緯度是否在圓/多邊形區(qū)域內(nèi)的算法推薦

    目錄 前言 一、根據(jù)坐標(biāo)經(jīng)緯度計算兩點距離(5種方法) 1.方法一 2.方法二 3.方法三 4.方法四 5.方法五 5.1 POM引入第三方依賴 5.2 代碼 6.測試結(jié)果對比 二、校驗經(jīng)緯度是否在制定區(qū)域內(nèi) 1.判斷一個坐標(biāo)是否在圓形區(qū)域內(nèi) 2.判斷一個坐標(biāo)是否在一個多邊形區(qū)域內(nèi) 3.結(jié)果 總結(jié) ??

    2024年02月10日
    瀏覽(28)
  • 用ES實現(xiàn)根據(jù)經(jīng)緯度由近及遠(yuǎn)推薦店鋪

    用ES實現(xiàn)根據(jù)經(jīng)緯度由近及遠(yuǎn)推薦店鋪

    ES中特有的類型geo_point,是用來存儲地圖類型的。店鋪推薦、地圖搜索和外賣平臺等,實現(xiàn)目標(biāo)距離你多少米,就是用這個數(shù)據(jù)類型做出來的。 其中,ES支持的地圖檢索方式有以下幾種; geo_distance:直線距離檢索,如給定點A,要求返回地圖上距離點A三千米的店鋪 geo_bounding

    2024年02月13日
    瀏覽(23)
  • 根據(jù)手機(jī)指南針經(jīng)緯度在地圖上找到其位置

    根據(jù)手機(jī)指南針經(jīng)緯度在地圖上找到其位置

    使用手機(jī)指南針獲取經(jīng)緯度,然后在地圖上找到位置。 1、使用手機(jī)指南針獲取經(jīng)緯度: 2、將度分秒轉(zhuǎn)換為度: 分/60+秒/3600+整數(shù)度數(shù),得到以度為單位的數(shù)值 手機(jī)經(jīng)緯度:117.1291666,31.842777 3、坐標(biāo)系轉(zhuǎn)換: 地圖坐標(biāo)系轉(zhuǎn)換 - 在線工具 輸入手機(jī)經(jīng)緯度:117.1291666,31.842777 得到

    2024年02月09日
    瀏覽(32)
  • Java調(diào)用高德地圖API根據(jù)詳細(xì)地址獲取經(jīng)緯度

    Java調(diào)用高德地圖API根據(jù)詳細(xì)地址獲取經(jīng)緯度

    訪問高德開放平臺https://lbs.amap.com/ 登錄后,在控制臺中創(chuàng)建一個應(yīng)用,獲取生成的應(yīng)用key。這個key將用于訪問高德地圖API。 ? 您可以使用Java中的 HttpURLConnection 或 HttpClient 等工具發(fā)送HTTP請求到高德地圖API,并傳遞參數(shù)以獲取經(jīng)緯度信息。以下是一個使用 HttpURLConnection 的示例

    2024年02月05日
    瀏覽(161)
  • 如何利用地圖API接口根據(jù)地址獲取具體的經(jīng)緯度?

    如何利用地圖API接口根據(jù)地址獲取具體的經(jīng)緯度?

    ?目錄 一、登錄到百度地圖開放平臺 二、認(rèn)證為開發(fā)者 三、創(chuàng)建應(yīng)用 四、地址轉(zhuǎn)經(jīng)緯度API接口 五、封裝JAVA工具類 百度地圖開放平臺網(wǎng)址:https://lbsyun.baidu.com/ 這里你有兩種選擇,可以選擇認(rèn)證個人開發(fā)者或者企業(yè)開發(fā)者,區(qū)別在企業(yè)認(rèn)證每日接口調(diào)用次數(shù)配額更多,并發(fā)

    2024年02月16日
    瀏覽(48)
  • 百度開發(fā)者平臺API地理編碼,根據(jù)地址獲取經(jīng)緯度

    百度開發(fā)者平臺API地理編碼,根據(jù)地址獲取經(jīng)緯度

    地理編碼 | 百度地圖API SDK (baidu.com) 原始csv 結(jié)果: 字段名稱: 社區(qū)名稱、經(jīng)度、緯度、看下表吧。 地理編碼 | 百度地圖API SDK (baidu.com) 或者參考這篇博文: http://t.csdn.cn/AghZk

    2024年02月15日
    瀏覽(21)
  • ElasticSearch - 根據(jù)經(jīng)緯度,簡單搜索指定距離范圍內(nèi)的數(shù)據(jù)

    ElasticSearch - 根據(jù)經(jīng)緯度,簡單搜索指定距離范圍內(nèi)的數(shù)據(jù)

    ES的地圖檢索方式 ES支持的地圖檢索方式有以下幾種; geo_distance geo_bounding_box geo_polygon 1、 geo_distance :直線距離檢索,如給定點A,要求返回地圖上距離點A三千米的商家(點外賣場景) 2、查找索引內(nèi)距離北京站(116.433733,39.908404)3000米內(nèi)的點 geo_distance涉及的參數(shù)如下 location:確

    2024年02月14日
    瀏覽(17)
  • 根據(jù)經(jīng)緯度計算地球上兩點之間的距離——Haversine公式介紹及計算步驟

    根據(jù)經(jīng)緯度計算地球上兩點之間的距離——Haversine公式介紹及計算步驟

    目錄 摘要 1.半正矢公式(Haversine Formula)介紹 2.半正矢公式應(yīng)用 3.半正矢公式計算 3.1 主要思路 3.2 計算步驟 3.2.1 平面向量計算方法 3.2.2 空間向量計算方法 寫本文的出發(fā)點是需要在Qlik中根據(jù)經(jīng)緯度計算地球上兩點間的距離。我在社區(qū)上搜到了相關(guān)公式的分享,這個公式叫做

    2023年04月10日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包