123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- let scene = document.querySelector('a-scene'),
- camera = document.querySelector('a-camera'),
- yRotation = document.querySelector('#y-rotation'),
- start = {lat: 22.364563, lon: 113.600967},
- end = {lat: 22.363379, lon: 113.598615},
- route = [],
- path = {},
- pathRecord = [],
- pathCreated = false;
- window.addEventListener('update-heading', function(data) {
- yRotation.innerText = Math.floor(data.detail) + "°";
- });
- // if this is not accurate we need to hook it onto camera.tick
- window.addEventListener('gps-camera-update-position', function(data) {
- // console.log('gps-camera-update-position', data);
- let cameraPosition = [data.detail.position.latitude, data.detail.position.longitude];
- // if(route.length > 1) {
- // route[0] = cameraPosition;
- // }
- if(pathCreated) {
- // update path
- } else if(!pathCreated && route.length > 1) {
- // put camera position at route[0]
- route[0] = cameraPosition;
- path = createPath(route);
- }
- });
- window.addEventListener('gps-position-update', function(position) {
- // console.log(position);
- });
- // function createPathRoot(position) {
- // let root = document.createElement('a-curve-point');
- // root.setAttribute('gps-entity-place', `latitude: ${lat}; longitude: ${lon};`);
- // path.appendChild(curvePoint);
- // }
- function getRoute(start, end) {
- axios.get('https://dev.virtualearth.net/REST/v1/Routes/Walking', {
- params: {
- 'wayPoint.1': `${start.lat},${start.lon}`,
- 'wayPoint.2': `${end.lat},${end.lon}`,
- 'routeAttributes': 'routePath',
- 'key': 'Ahwqh1mUNte20qOAphNKU-hSGsmEnavPTOU-749M7MJl7MYIdsTmL4XFoSwS4QvP'
- }
- }).then(response => {
- if(response.status === 200) {
- route = response.data.resourceSets[0].resources[0].routePath.line.coordinates;
-
- // drawPath(route);
- } else {
- throw new Error(response.status);
- }
- })
- }
- function createBoxes(route) {
- if(route.length) {
- console.log(route);
- route.forEach(coordinate => {
- const lat = coordinate[0];
- const lon = coordinate[1];
- const placeText = document.createElement('a-box');
- placeText.setAttribute('gps-entity-place', `latitude: ${lat}; longitude: ${lon};`);
- // placeText.setAttribute('title', 'PATH');
- placeText.setAttribute('scale', '5 5 5');
- scene.appendChild(placeText);
- });
- }
- }
- function createPath(route) {
- let path = {}; // null
- if(route.length > 1) {
- const pathElement = document.createElement('a-curve');
- pathElement.id = 'path';
- scene.appendChild(pathElement);
- path.el = pathElement;
- path.points = [];
- route.forEach(coordinate => {
- const lat = coordinate[0];
- const lon = coordinate[1];
- let pointElement = document.createElement('a-curve-point');
- pointElement.setAttribute('gps-entity-place', `latitude: ${lat}; longitude: ${lon};`);
- pathElement.appendChild(pointElement);
- path.points.push({el: pointElement, lat: lat, lon: lon});
- });
-
- // const drawPath = document.createElement('a-draw-curve');
- // drawPath.setAttribute('curveref', '#path');
- // drawPath.setAttribute('material', 'shader: line; color: green;');
- // scene.appendChild(drawPath);
- const renderElement = document.createElement('a-entity');
- renderElement.setAttribute('clone-along-curve', 'curve: #path; spacing: 2; scale: 1 1 1; rotation: 90 0 0;');
- renderElement.setAttribute('geometry', 'primitive:triangle;');
- renderElement.setAttribute('material', 'side: double; color: green;');
- scene.appendChild(renderElement);
- path.renderEl = renderElement;
- pathCreated = true;
- }
- return path;
- }
- function showPosition() {
- let lat = document.getElementById('latitude');
- let lon = document.getElementById('longitude');
- let options = {
- enableHighAccuracy: true,
- timeout: 30000,
- maximumAge: 0
- };
-
- function success(pos) {
- let crd = pos.coords;
-
- lat.innerHTML = `${crd.latitude}`;
- lon.innerHTML = `${crd.longitude}`;
- }
-
- function error(err) {
- console.warn(`ERROR(${err.code}): ${err.message}`);
- }
-
- navigator.geolocation.watchPosition(success, error, options);
- }
- showPosition();
- // console.log(coordtransform.wgs84togcj02(113.59573843475094, 22.36707700088935));
- getRoute(start, end);
- // wgs84 gps position: 22.36707700088935, 113.59573843475094
- // gcj02 gps position: 22.370123789469808, 113.5907111095581
|