2013-03-03 9 views
9

Geokody aplikacji internetowych Map Google i przedstawiają obszary regionalne w bardzo ładny sposób. Czy to jest możliwe za pomocą interfejsu API JavaScript Google Maps? Przykładem strony:Regiony konturów i cieni za pomocą interfejsu API Map Google Maps JavaScript

https://maps.google.se/maps?q=sk%C3%A5ne&hl=sv&ie=UTF8&ll=57.1422,13.337402&spn=5.468408,16.907959&sll=39.290385,-76.612189&sspn=0.243658,0.528374&hnear=Sk%C3%A5ne+l%C3%A4n&t=m&z=7

searching for Skåne, Sweden

outline and shading for Skåne, Sweden

To powiatu Skanii w Szwecji. Aplikacja internetowa Google Maps zaznacza ją na czerwono i zmienia kolor na różowy. Chcę geokodować i wyświetlać takie regiony za pomocą interfejsu API JavaScript Google Maps. W jaki sposób?

Odpowiedz

9

O ile mi wiadomo, funkcja granic nie jest jeszcze dostępna w interfejsie API Map Google.

Musisz znać granice w celu ukształtowania wielokąta. Informacje zwracane przez Geokodera podane pod adresem nie wystarczają do ukształtowania granic. Możesz zobaczyć zwróconą informację: here.

Granice Sztokholm to: '17.73966,59.66395|17.75651,59.61827|17.81771,59.58645|17.84347,59.53069|17.78465,59.49340|17.78277,59.38916|17.83277,59.36500|17.93215,59.33652|18.00736,59.34496|18.09139,59.33444|18.05722,59.39139|18.12000,59.45388|18.19508,59.45012|18.16562,59.41083|18.32826,59.39795|18.28659,59.41228|18.25945,59.44638|18.31722,59.47361|18.37333,59.46694|18.66638,59.59138|18.69979,59.64409|18.74555,59.68916|18.84139,59.71249|18.98569,59.71666|19.03222,59.71999|19.07965,59.76743|18.93472,59.78361|18.86472,59.79804|18.96922,59.86561|19.06545,59.83250|19.07056,59.88972|19.00722,59.91277|18.92972,59.92472|18.89000,59.95805|18.81722,60.07548|18.77666,60.11084|18.71139,60.12806|18.63277,60.14500|18.50743,60.15265|18.44805,59.99249|18.37334,59.86500|18.29055,59.83527|18.15472,59.79556|18.08111,59.74014|17.96055,59.70472|17.89694,59.68916|17.73966,59.66395'

Podsumowując Najtrudniejsze jest znalezienie granice dla miast, które mają być narysowane na mapie. Nie jestem pewien, czy istnieje bezpłatna usługa, która zapewnia te granice. Sprawdź to Stackoverflow question, aby uzyskać więcej informacji na temat witryn zapewniających granice.

W poniższym przykładzie, po kliknięciu przycisku Rysuj Sztokholm, na mapie rysuje się Sztokholm.

<html> 
 
     
 
     <head> 
 
      
 
      <head> 
 
       <title>Area calculator - Outline a property on a google map and find its area</title> 
 
       <title>Google Maps</title> 
 
       <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> 
 
       <script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3&sensor=false&language=en"> 
 
        
 
       </script> 
 
       <script type="text/javascript"> 
 
        var map, 
 
        geocoder, 
 
        addressMarker, 
 
        mapCenter = new google.maps.LatLng(59.3426606750, 18.0736160278); 
 
    
 
        function initialize() { 
 
         map = new google.maps.Map(document.getElementById('map_canvas'), { 
 
          zoom: 7, 
 
          center: mapCenter, 
 
          mapTypeId: google.maps.MapTypeId.ROADMAP 
 
         }); 
 
         geocoder = new google.maps.Geocoder(); 
 
        } 
 
    
 
        function showAddress() { 
 
         var address = $('#to').val(); 
 
         geocoder.geocode({ 
 
          'address': address 
 
         }, function (results, status) { 
 
          if (status == google.maps.GeocoderStatus.OK) { 
 
           map.setCenter(results[0].geometry.location); 
 
           var marker = new google.maps.Marker({ 
 
            map: map, 
 
            position: results[0].geometry.location 
 
           }); 
 
          } else { 
 
           alert("Geocode was not successful for the following reason: " + status); 
 
          } 
 
         }); 
 
        } 
 
    
 
    \t \t \t \t function drawPolygon() { 
 
    \t \t \t \t 
 
    \t \t \t \t // stockholm boundaries 
 
    \t \t \t \t \t var boundaries = '17.73966,59.66395|17.75651,59.61827|17.81771,59.58645|17.84347,59.53069|17.78465,59.49340|17.78277,59.38916|17.83277,59.36500|17.93215,59.33652|18.00736,59.34496|18.09139,59.33444|18.05722,59.39139|18.12000,59.45388|18.19508,59.45012|18.16562,59.41083|18.32826,59.39795|18.28659,59.41228|18.25945,59.44638|18.31722,59.47361|18.37333,59.46694|18.66638,59.59138|18.69979,59.64409|18.74555,59.68916|18.84139,59.71249|18.98569,59.71666|19.03222,59.71999|19.07965,59.76743|18.93472,59.78361|18.86472,59.79804|18.96922,59.86561|19.06545,59.83250|19.07056,59.88972|19.00722,59.91277|18.92972,59.92472|18.89000,59.95805|18.81722,60.07548|18.77666,60.11084|18.71139,60.12806|18.63277,60.14500|18.50743,60.15265|18.44805,59.99249|18.37334,59.86500|18.29055,59.83527|18.15472,59.79556|18.08111,59.74014|17.96055,59.70472|17.89694,59.68916|17.73966,59.66395'; 
 
        
 
         var latLngArray = boundaries.split('|'); 
 
         var points = []; 
 
         for (var i = 0; i < latLngArray.length; i++) { 
 
          pos = latLngArray[i].split(','); 
 
          points.push(new google.maps.LatLng(parseFloat(pos[1]), parseFloat(pos[0]))); 
 
         } 
 
    
 
         var shape = new google.maps.Polygon({ 
 
          paths: points, 
 
          strokeColor: '#ff0000', 
 
          strokeOpacity: 0.8, 
 
          strokeWeight: 2, 
 
          fillColor: '#ff0000', 
 
          fillOpacity: 0.35 
 
         }); 
 
    
 
         shape.setMap(map); 
 
        } 
 
    
 
    
 
        $(document).ready(function() { 
 
         initialize(); 
 
        }); 
 
    
 
        $(document).on('click', '.show-address', function (e) { 
 
         e.preventDefault(); 
 
         showAddress(); 
 
        }); 
 
    \t \t \t \t 
 
    \t \t \t \t $(document).on('click', '.draw-address', function (e) { 
 
         e.preventDefault(); 
 
         drawPolygon(); 
 
        }); 
 
       </script> 
 
      </head> 
 
      
 
      <body> 
 
       <div id="basic-map"> 
 
        <div id="map_canvas" style="height:150px;"></div> 
 
        <label for="to">Address</label> 
 
        <input type="text" id="to" value="Stockholm, Sweden" /> 
 
        <a href="#" class="show-address">Show Address</a> 
 
    \t \t \t \t <a href="#" class="draw-address">Draw Stockholm</a> 
 
       </div> 
 
      </body> 
 
    
 
    </html>

Mam nadzieję, że to pomaga.

+1

Dzięki za odpowiedź. Maybee, masz rację, nie ma sposobu, aby uzyskać geoencode coords dla regionalnego wyjścia jak na razie z api. Jest jednak do bani, ponieważ widzimy w moim pliku przykładowym, że dane istnieją i mogą być udostępniane. Miasta są łatwe, które można pobrać za pomocą interfejsu API geocode dla tych, którzy szukają tych informacji. –

+3

Faceci, wszelkie aktualizacje na ten temat. Jest rok 2015, wciąż szukam rozwiązania. Dzięki z góry – theChinmay

Powiązane problemy