2016-10-19 1 views

답변

1

Google지도 자바 스크립트 API를 사용한다고 가정.

인코딩 코드 :

<!DOCTYPE html> 
 
    <html> 
 
     <head> 
 
     <title>Encoding methods</title> 
 
     <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
 
     <meta charset="utf-8"> 
 
     <style> 
 
      #right-panel { 
 
      font-family: 'Roboto','sans-serif'; 
 
      line-height: 30px; 
 
      padding-left: 10px; 
 
      } 
 
    
 
      #right-panel select, #right-panel input { 
 
      font-size: 15px; 
 
      } 
 
    
 
      #right-panel select { 
 
      width: 100%; 
 
      } 
 
    
 
      #right-panel i { 
 
      font-size: 12px; 
 
      } 
 
      html, body { 
 
      height: 100%; 
 
      margin: 0; 
 
      padding: 0; 
 
      } 
 
      #map { 
 
      height: 100%; 
 
      width: 50%; 
 
      float: left; 
 
      } 
 
      #right-panel { 
 
      width: 46%; 
 
      float: left; 
 
      } 
 
      #encoded-polyline { 
 
      height: 100px; 
 
      width: 100%; 
 
      } 
 
     </style> 
 
     </head> 
 
     <body> 
 
     <div id="map"></div> 
 
     <div id="right-panel"> 
 
      <div>Encoding:</div> 
 
      <textarea id="encoded-polyline"></textarea> 
 
     </div> 
 
     <script> 
 
\t \t    var poly, map; 
 
      // This example requires the Geometry library. Include the libraries=geometry 
 
      // parameter when you first load the API. For example: 
 
      // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=geometry"> 
 
    
 
      function initMap() { 
 
      map = new google.maps.Map(document.getElementById('map'), { 
 
       zoom: 14, 
 
       center: {lat: 34.366, lng: -89.519} 
 
      }); 
 
    
 
      // Add a listener for the click event 
 
      google.maps.event.addListener(map, 'click', function(event) { 
 
       addLatLngToPoly(event.latLng, poly); 
 
      }); 
 
      } 
 
    
 
      /** 
 
      * Handles click events on a map, and adds a new point to the Polyline. 
 
      * Updates the encoding text area with the path's encoded values. 
 
      */ 
 
      function addLatLngToPoly(latLng) { 
 
\t \t \t if(!poly){ 
 
\t \t \t \t poly = new google.maps.Polyline({ 
 
\t \t \t \t \t strokeColor: '#000000', 
 
\t \t \t \t \t strokeOpacity: 1, 
 
\t \t \t \t \t strokeWeight: 3, 
 
\t \t \t \t \t map: map 
 
\t \t \t \t \t }); 
 
\t \t \t } 
 
      var path = poly.getPath(); 
 
      // Because path is an MVCArray, we can simply append a new coordinate 
 
      // and it will automatically appear 
 
\t \t \t if(path.length==2){ 
 
\t \t \t \t poly = new google.maps.Polyline({ 
 
\t \t \t \t \t strokeColor: '#000000', 
 
\t \t \t \t \t strokeOpacity: 1, 
 
\t \t \t \t \t strokeWeight: 3, 
 
\t \t \t \t \t map: map 
 
\t \t \t \t \t }); 
 
\t \t \t } 
 
\t \t \t path = poly.getPath(); 
 
\t \t \t path.push(latLng); 
 
      // Update the text field to display the polyline encodings 
 
      var encodeString = google.maps.geometry.encoding.encodePath(path); 
 
      if (encodeString) { 
 
       document.getElementById('encoded-polyline').value = encodeString; 
 
      } 
 
      } 
 
     </script> 
 
     <script src="https://maps.googleapis.com/maps/api/js?libraries=geometry&callback=initMap" 
 
      async defer></script> 
 
     </body>

당신은 데이터베이스의 인코딩 된 문자열을 저장할 수 있습니다.

마찬가지로 당신은 저장된 폴리 라인을 디코딩 할 수 있습니다

<html> 
 
    <head> 
 
    <title>Test</title> 
 
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry&amp;sensor=false"></script> 
 
    <style type="text/css"> 
 
    #map {width:670px;height:600px;} 
 
    </style> 
 
    <script type='text/javascript'> 
 
    function initialize() { 
 
     var myLatlng = new google.maps.LatLng(51.65905179951626, 7.3835928124999555); 
 
     var myOptions = { 
 
      zoom: 8, 
 
      center: myLatlng, 
 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
 
     } 
 
     var map = new google.maps.Map(document.getElementById("map"), myOptions); 
 
      
 
     var decodedPath = google.maps.geometry.encoding.decodePath('}[email protected]\\[email protected]@r{[email protected]@[email protected]@[email protected]}[email protected]_h|@r{Zad\\y|_D}[email protected]@[email protected]}llBpoZqa{@[email protected]~eBaaX}{[email protected]}[email protected]`dYs_NquNgbjAf{[email protected]|[email protected]@}[email protected]}[email protected]|[email protected]@r{ZhjFr}[email protected]}@[email protected]@'); 
 
     var decodedLevels = decodeLevels("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"); 
 
    
 
     var setRegion = new google.maps.Polyline({ 
 
      path: decodedPath, 
 
      levels: decodedLevels, 
 
      strokeColor: "#FF0000", 
 
      strokeOpacity: 1.0, 
 
      strokeWeight: 2, 
 
      map: map 
 
     }); 
 
    } 
 
    
 
    function decodeLevels(encodedLevelsString) { 
 
     var decodedLevels = []; 
 
    
 
     for (var i = 0; i < encodedLevelsString.length; ++i) { 
 
      var level = encodedLevelsString.charCodeAt(i) - 63; 
 
      decodedLevels.push(level); 
 
     } 
 
     return decodedLevels; 
 
    } 
 
    </script> 
 
    </head> 
 
    <body onload="initialize()"> 
 
    <div id="map"></div> 
 
    </body> 
 
    </html>

이 도움이된다면 찬성 투표하는 것을 잊지 마세요!

+0

하나의 폴리 라인 대신 여러 개의 연결된 폴리 라인을 만들 수 있습니까? –

+0

코드 스 니펫을 업데이트했습니다. 이제 2 점 사이에 연결된 폴리 라인을 여러 개 추가 할 수 있습니다. 텍스트 상자는 마지막 폴리 라인에 대한 문자열을 표시합니다. 희망이 도움이됩니다! – arnabkaycee

관련 문제