2013-03-03 12 views
9

का उपयोग करके रूपरेखा और छाया क्षेत्र Google मानचित्र वेब एप्लिकेशन geocodes और क्षेत्रीय क्षेत्रों को एक बहुत ही अच्छे फैशन में रूपरेखा देता है। क्या यह Google मानचित्र जावास्क्रिप्ट एपीआई के माध्यम से संभव है? वेबसाइट का एक उदाहरण:Google मानचित्र जावास्क्रिप्ट एपीआई

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

यह स्वीडन में Skåne के काउंटी है। Google मानचित्र वेब एप्लिकेशन इसे लाल रंग में रेखांकित करता है और इसे गुलाबी रंग देता है। मैं Google मानचित्र जावास्क्रिप्ट एपीआई के साथ इस तरह के क्षेत्रों को geocode और प्रदर्शित करना चाहता हूँ। कैसे?

उत्तर

9

जहां तक ​​मुझे पता है कि सीमाएं सुविधा अभी तक Google मानचित्र API v3 से प्रदान नहीं की गई हैं।

आपको बहुभुज को आकार देने के लिए सीमाओं को जानने की आवश्यकता है। जियोकोडर द्वारा लौटाई गई जानकारी सीमाओं को आकार देने के लिए पर्याप्त नहीं है। आप लौटाई गई जानकारी here देख सकते हैं।

स्टॉकहोम सीमाएं हैं: '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'

अंत में कठिन हिस्सा शहरों आप अपने नक्शे पर तैयार करना चाहते हैं के लिए सीमाओं को मिल रहा है। मुझे यकीन नहीं है कि एक मुफ्त सेवा है जो इन सीमाओं को प्रदान करती है। सीमाएं प्रदान करने वाली साइटों के बारे में अधिक जानकारी प्राप्त करने के लिए यह Stackoverflow question देखें।

नीचे दिए गए उदाहरण में जब आप ड्राउ स्टॉकहोम बटन पर क्लिक करते हैं तो स्टॉकहोम मानचित्र पर खींचा जाता है।

<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>

मुझे आशा है कि इस मदद करता है।

+1

उत्तर के लिए धन्यवाद। हो सकता है कि आप सही हैं, अब एपीआई के अनुसार क्षेत्रीय उत्पादन के लिए भू-कोडित कॉर्ड प्राप्त करने का कोई तरीका नहीं है। हालांकि यह बेकार है, क्योंकि हम अपने उदाहरण लिंक में देख सकते हैं, कि डेटा मौजूद है और साझा किया जा सकता है। शहर आसान हैं, जिन्हें जियोकोड एपीआई के माध्यम से पुनर्प्राप्त किया जा सकता है, जो उस जानकारी की खोज करते हैं। –

+3

दोस्तों, इस पर कोई अद्यतन। यह 2015 है, अभी भी एक समाधान की तलाश में है। अग्रिम में धन्यवाद – theChinmay

संबंधित मुद्दे