2011-04-29 22 views
11

में "मार्ग के साथ ब्याज के बिंदु" कर रहे हैं, मुझे यात्रियों को मार्ग बनाने के लिए Google नक्शे का उपयोग करने की अनुमति देने की आवश्यकता है, और फिर रुचि के बिंदुओं के डेटाबेस को पूछें (मान लें, मैकडॉनल्ड्स के स्थान) और फिर सभी दिखाएं ये स्थान जो एक मील या दो मार्ग के भीतर हैं, वे ले जायेंगे। सवाल यह है कि, मैं Google से वापस आने वाली "ड्राइविंग दिशा-निर्देश" जानकारी को कुशलता से कैसे ले सकता हूं (अनिवार्य रूप से लेट/लम्बे जोड़े की एक सरणी), और रूट से एक निश्चित दूरी के भीतर आने वाले स्थानों को प्राप्त करने के लिए इसे एक एसक्यूएल क्वेरी में बदल दें ?Google मानचित्र

यह सुपर सटीक होने की आवश्यकता नहीं है, और "जैसे पक्षी उड़ता है" मार्गों से दूरी ठीक है। मैं इसे काफी कुशल होने के बारे में चिंतित हूं।

डेटाबेस में, अक्षरों और देशांतर वाले प्रत्येक प्रविष्टि के साथ चीजें मूल रूप से स्थापित की जाती हैं, लेकिन मैं आवश्यकतानुसार डेटाबेस स्कीमा को बदल सकता हूं। http://www.chevron.com/products/stations/stationfinder/planyourroute.aspx

http://karmatics.com/docs/locationsalongroute.png:

उदाहरण के लिए, इस साइट है कि मैं क्या (यदि आप एक प्रारंभिक बिंदु और अंत बिंदु दे, यह शेवरॉन स्टेशनों कि राजमार्ग के पास हैं आप उठाएंगे दिखाई देगा) करना चाहते हैं करता है

उत्तर

12

चेक इस बाहर

http://google-maps-utility-library-v3.googlecode.com/svn/tags/routeboxer/1.0/examples/routeboxer-v3.html

यहाँ प्रलेखन है: http://google-maps-utility-library-v3.googlecode.com/svn/tags/routeboxer/1.0/docs/examples.html

आप मिल सकता है बॉक्स RouteBoxer से समन्वय करता है और प्रसंस्करण

+0

आदर्श के लिए एक serverside स्क्रिप्ट है कि भेजने के लिए, मैं वास्तव में क्या देख रहा था। – rob

+0

मुझे खेद है कि मेरे पास देने के लिए एक वोट है। – Hemlock

+0

मैं एक सप्ताह के लिए इसका उत्तर खोज रहा हूं! धन्यवाद! – ajbraus

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

    <body> 
    <div id="map"></div> 
    <script>  
var map; 
     function initMap() { 
     map = new google.maps.Map(document.getElementById('map'), { 
      center: {lat: 19.2570, lng: 72.8712}, 
      zoom: 10, 
     }); 

     var directionService = new google.maps.DirectionsService(); 
     var directionsRenderer = new google.maps.DirectionsRenderer({ map: map }); 
     var request = { 
      origin: "<?php echo $source;?>", 
      destination: "<?php echo $destination;?>", 
      travelMode: google.maps.DirectionsTravelMode.DRIVING 
     } 


     directionService.route(request, function(result, status) { 
     if (status == google.maps.DirectionsStatus.OK) { 

      var path = result.routes[0].overview_path; 

      var poly = new google.maps.Polyline({ 
       strokeColor: '#FF0000', 
       strokeOpacity: 1.0, 
       strokeWeight: 3, 
      map: map, 
      }); 
      poly.setPath(path); 


      var myTollLocations = [ 
       <?php 

       isset($hello); //$hello is array which comes from database 
       foreach ($hello as $key => $value) { 
       ?> 
        new google.maps.LatLng(<?php echo $hello[$key]->latitude;?>, <?php echo $hello[$key]->longitude;?>), 
       <?php 
       } 
       ?> 

      ]; 


      for (var i = 0; i < myTollLocations.length ; i++) { 
       if (google.maps.geometry.poly.isLocationOnEdge(myTollLocations[i], poly,0.005)) { 
        console.log("found"); 


       }else{ 
        console.log("Not Found!"); 
       } 
      }; 




      <?php 
      $markersLocation = array($source, $destination); 
      foreach ($markersLocation as $key => $values) { 

      ?> 


      //Source Marker(convert address to LatLng for marker) 
      var geocoder = new google.maps.Geocoder();    
      geocoder.geocode({ 'address': '<?php echo $markersLocation[$key]?>'}, function(results, status) { 

       if (status == google.maps.GeocoderStatus.OK) { 
        var latitude = results[0].geometry.location.lat(); 
        var longitude = results[0].geometry.location.lng(); 
       } 

       console.log(latitude); 
       console.log(longitude); 

       var myLatLng = {lat: latitude, lng: longitude}; 



       var marker = new google.maps.Marker({ 
        position: myLatLng, 
        map: map, 
        title: 'source', 
        icon: 'http://innowrap.com/clients/digitoll/ic_red_marker.png' 

       }); 

      }); 


      <?php 
      } 
      ?> 


      } else { 
      alert("Directions query failed: " + status); 
      } 
     }); 


     } 


    </script> 
    <script src="https://maps.googleapis.com/maps/api/js?key=ADD YOUR API KEY&libraries=geometry&callback=initMap" 
     async defer></script> 
    </body> 
</html> 
+0

जबकि इस कोड स्निपेट का स्वागत है, और कुछ मदद प्रदान कर सकता है, यह [अगर मेटा.स्टैकएक्स एक्सचेंज /q/114762) के * में * और * क्यों * हल करता है तो इसमें बहुत सुधार हुआ होगा मुसीबत। याद रखें कि आप भविष्य में पाठकों के लिए सवाल का जवाब दे रहे हैं, न केवल उस व्यक्ति से पूछ रहे हैं! स्पष्टीकरण जोड़ने के लिए कृपया अपना उत्तर संपादित करें, और संकेत दें कि कौन सी सीमाएं और धारणाएं लागू होती हैं। –