2017-08-08 58 views
0

我被要求做一個應用程序,它可以幫助學生與學術Block.The問題裏面最短的他的課路線導航不過是,如何可以創建這樣的地圖這將有房間,樓層,如果可能的話,這樣的校園內所有建築物的詳細室內地圖?創建地圖建築室內的Android設備

+0

肯定。您可以在地圖上繪製(多邊形)線條;他們可以匹配建築物的牆壁。你準確的問題是什麼?另一件事是GPS的準確性;可能這在室內不夠準確。你有建築物的建築計劃(可能是簡化的)嗎?您可以添加掉在地上 –

+0

我的意思是,我需要創建多個樓層和rooms.Yes一個建築,我可以要求從用戶的樓層室內地圖的按鈕,但在那之後,他應該看到與他位置的地圖和他註定的房間。那麼我申請的Dijkstra算法中的最短path.The創建地圖的是impediment.Please幫助。 – Ashish

回答

0

我可以舉一個例子網頁;我不知道機器人編程

它包含了1樓,有幾個房間。和按鈕來選擇關卡。也許它可以給你一些啓發。

我想你需要一些高程數據。
而對於導航想想樓梯和電梯。

<!DOCTYPE html> 
<html> 
<head> 
<title>Indoor Map</title> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
<meta charset="utf-8"> 
<style> 
    html, 
    body { 
     height: 100%; 
     margin: 0; 
     padding: 0; 
    } 
    #map { 
     height: 80%; 
    } 

</style> 
<script> 
    var map; 
    var infowindow; 
    var buildingPolyLine; 
    var roomsPolylines = []; 
    var activeLevel = 0; 

    // VUB - Brussels university - Building G with a few rooms 
    var building = { 
     "name": "Building G", 
     "color": "#ff0000", 
     nodes: [ 
      [50.8217232994024, 4.397075700799178], 
      [50.82232714536237, 4.3975462942398735], 
      [50.8224010730568, 4.397200047969818], 
      [50.82182496608163, 4.396712368707085] 
     ] 
    }; 

    var rooms = [{ 
      "name": "Parking", 
      "level": "0", 
      "color": "#0000ff", 
      nodes: [ 
       [50.82230750704816, 4.397481197138404], 
       [50.82235988170447, 4.397291001687336], 
       [50.822044870401214, 4.397048382465982], 
       [50.82199380856154, 4.39725003087915] 
      ] 
     }, 
     { 
      "name": "1G003", 
      "level": "1", 
      "color": "#0000ff", 
      nodes: [ 
       [50.82234196105868, 4.397353604435921], 
       [50.82231750839912, 4.397428280481108], 
       [50.82223654023366, 4.397366375092133], 
       [50.822261380536176, 4.397290787105703] 
      ] 
     }, 
     { 
      "name": "1G009", 
      "level": "1", 
      "color": "#0000ff", 
      nodes: [ 
       [50.82219283244282, 4.397244183713838], 
       [50.82216991951639, 4.397315503651953], 
       [50.82211850835268, 4.397274663667758], 
       [50.822140266976895, 4.397204862530089] 
      ] 
     }, 
     { 
      "name": "2G10", 
      "level": "2", 
      "color": "#0000ff", 
      nodes: [ 
       [50.8223601104488, 4.397285516533884], 
       [50.82230697331296, 4.3974744915340125], 
       [50.82215986306273, 4.397342808561007], 
       [50.8222137798275, 4.3971696853441244] 
      ] 
     } 
    ]; 

    // return a polyline. If you give 2 points, it will simply be a line 
    function makePolyline(points, color, close, title, visible) { 
     if (close) { 
      points.push(points[0]); // closed polyline, ... 
     } 
     var onMap = visible ? map : null; 
     return new google.maps.Polyline({ 
      path: points, 
      //geodesic: true, 
      strokeColor: color, // '#FF0000', 
      strokeOpacity: 1.0, 
      strokeWeight: 2, 
      title: title, 
      map: onMap // we will let the Level buttons turn on the right rooms 
     }); 
    } 
    function initMap() { 
     var myLocation = { 
      lat: 50.822, 
      lng: 4.397 
     }; 
     map = new google.maps.Map(document.getElementById('map'), { 
      center: myLocation, 
      zoom: 17 
     }); 
     // plot building 
     var points = []; 
     for (var i in building.nodes) { 
      points.push({ 
       lat: building.nodes[i][0], 
       lng: building.nodes[i][1] 
      }); 
     } 
     var buildingPolyLine = makePolyline(points, building.color, true, building.name, true); 
     // plot building 
     for (var j in rooms) { 
      points = []; 
      for (var i in rooms[j].nodes) { 
       points.push({ 
        lat: rooms[j].nodes[i][0], 
        lng: rooms[j].nodes[i][1] 
       }); 
      } 
      roomsPolylines.push(makePolyline(points, rooms[j].color, true, rooms[j].name, false)); 
     } 
     // activate level 0 
     setLevel(0); 
    } 
    function setLevel(level) { 
     for (var j in rooms) { 
      if (level == rooms[j].level) { 
       roomsPolylines[j].setMap(map); 
      } else { 
       roomsPolylines[j].setMap(null); 
      } 
     } 
    } 
</script> 
</head> 
<body> 
    <div id="map"></div> 
    Level 
    <input type="button" onclick="setLevel(0)" value="0" /> 
    <input type="button" onclick="setLevel(1)" value="1" /> 
    <input type="button" onclick="setLevel(2)" value="2" /> 
    <script src="https://maps.googleapis.com/maps/api/js?callback=initMap" async defer></script> 
</body> 
</html>