위 챗 애플 릿 맵 에서 선분 을 그리고 측정(인 스 턴 스 코드)
위 코드:wxml
<map id="tb_map" longitude="{{longitude}}" latitude="{{latitude}}" scale="14" bindtap="clickMapTap" bindcontroltap="controltap" bindregiοnchange="regionchange" markers="{{marks}}" polygons="{{polygons}}" polyline="{{polyline}}" include-points="{{includePoints}}"
bindmarkertap="markertap" show-compass="true" show-location="true" style="width: 100%; height:{{mapH}}rpx">
<cover-image style="position: absolute;left:20px;top:100px;width:20px;height:20px" src="/images/qun.png" bindtap="getLocalImage">
</cover-image>
<cover-view class="draw" style="position: absolute;left:87%;top:20px">
<cover-image class="map_buttons" style="width:30px;height:30px" bindtap="drawTap" src="/images/draw.png" />
<cover-image class="map_buttons" style="width:30px;height:30px" bindtap="measureTap" src="/images/measure.png" />
<cover-image class="map_buttons" style="width:30px;height:30px" bindtap="backTap" src="/images/back.png" />
<cover-image class="map_buttons" style="width:30px;height:30px" bindtap="finishTap" src="/images/finish.png" />
</cover-view>
</map>
여기 에는 원 하지 않 는 버튼 이 많 습 니 다.cover-image 는 볼 수 있 을 뿐만 아니 라 클릭 할 수 있 습 니 다.image 를 직접 써 도 볼 수 있 지만 클릭 할 수 없 을 것 같 습 니 다.이 구 덩이 를 기록 해라.주요 한 일 은 맵 의 클릭 이벤트, bindtap="clickMapTap"과 데이터 의 전시 polyline="{polyline}"과 markers="{marks}"
js:
measuretap 는 맵 에 상 태 를 추가 하 는 데 사 용 됩 니 다.page 의 data 성명:mapstate(맵 의 상태);그리고 measuretap 에서 mapstate 값 을 수정 하면 됩 니 다.
주로 이벤트,사 고 를 클릭 하고 지 도 를 클릭 하여 경위도,판단 점 의 수량 을 얻어 조작 상의 코드 를 완성 합 니 다.
clickMapTap: function(e) { //
var mark = new Object();// mark
mark.id = this.data.marks.length;
mark.longitude = e.detail.longitude; //
mark.latitude = e.detail.latitude;
mark.iconPath = "/images/point.png";
mark.width = 10;
mark.height = 12;
// data curPoints , 。
var length = this.data.curPoints.push({
longitude: e.detail.longitude,
latitude: e.detail.latitude
})
var length = this.data.curPoints.length;
if (length > 1) { // ,
var p2 = this.data.curPoints[length-1]
var p1 = this.data.curPoints[length-2]
dis += util.distance(p1, p2);
let datas = Number(dis); //
let datas2 = datas.toFixed(2) + " ";//
var x = -(datas2.length * 1)//
mark.label = {
fontSize: 14,
anchorX: x,
anchorY: 0,
content: datas2,
textAlign: 'center',
color: '#000000',
}
this.data.marks.push(mark);
// console.log(this.data.curPoints)
// polyline , , 。
var pl = [{
points: this.data.curPoints,
color: "#0066FF",
width: 2,
dottedLine: false,
}];
//
this.setData({
marks: this.data.marks,
polyline:pl
})
} else { //
this.data.marks.push(mark);
this.setData({
marks: this.data.marks
})
}
}
},
도구 종류 Util:
// 1, 1; 2, 2. 2 。
//<returns> ( : )</returns>
//util , , page
//var util = require('../../../utils/util.js'); 。
function distance(p1, p2) {
// haversine 。
//
var lat1 = p1.latitude * Math.PI / 180;
var lon1 = p1.longitude * Math.PI / 180;
var lat2 = p2.latitude * Math.PI / 180;
var lon2 = p2.longitude * Math.PI / 180;
//
var vLon = Math.abs(lon1 - lon2);
var vLat = Math.abs(lat1 - lat2);
//h is the great circle distance in radians, great circle , 。
var v = Math.sin(vLat / 2);
var v1 = Math.sin(vLon / 2);
var h = v * v + Math.cos(lat1) * Math.cos(lat2) * v1 * v1;
// ,
var distance = 2 * 6371000 * Math.asin(Math.sqrt(h));
return distance;
}
module.exports = {//
distance: distance,
}
주의 점:1.util 클래스 파일 가 져 오기
2.클래스 파일 의 방법 템 플 릿 의 맵 관계
3.ployline 대상 은 하나의 배열 로 대상 이 아니 므 로 등급 관계 에 주의 하 세 요.
총결산
위 에서 말 한 것 은 소 편 이 소개 한 위 챗 애플 릿 지도 로 라인 을 그리고 측정 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
도쿄도 건축물 환경 계획서의 데이터로 물건 사이트를 만들어 봤어요.나는 원래 이 집을 좋아했지만 도쿄도 건축물 환경계획서의 데이터가 좋아서 그것을 바탕으로 이 사이트를 만들었다. 이 물건의 구조물의 규격정보, 지도정보, 거주편안정보를 조합하여 감각이 좋은 물건 사이트를 만들고 싶다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.