2012-05-09 22 views
25

का उपयोग कर गूगल मैप्स एपीआई में v2 यह आसान थापॉलीलाइन सड़क के लिए गूगल मैप्स एपीआई v3

var map = new GMap2(document.getElementById("map")); 
    map.setCenter(new GLatLng(53.7877, -2.9832),13) 
// map.addControl(new GLargeMapControl()); 
// map.addControl(new GMapTypeControl()); 
    var dirn = new GDirections(); 

//  var firstpoint = true; 
    var gmarkers = []; 
    var gpolys = []; 
    var dist = 0; 

// == When the user clicks on a the map, get directiobns from that point to itself == 

gmarkers.push(new google.maps.LatLng(53.7877, -2.9832)); 
gmarkers.push(new google.maps.LatLng(53.9007, -2.9832)); 
gmarkers.push(new GLatLng(53.600, -2.700)); 



for (var i = 0; i < gmarkers.length-1; i++) { 
    console.log(gmarkers[i]); 
       dirn.loadFromWaypoints([gmarkers[i].toUrlValue(6),gmarkers[i+1].toUrlValue(6)],{getPolyline:true}); 

} 


// == when the load event completes, plot the point on the street == 
    GEvent.addListener(dirn,"load", function() { 
// snap to last vertex in the polyline 
     var n = dirn.getPolyline().getVertexCount(); 
      map.addOverlay(dirn.getPolyline()); 
      gpolys.push(dirn.getPolyline()); 
      dist += dirn.getPolyline().getDistance(); 
      document.getElementById("distance").innerHTML="Path length: "+(dist/1000).toFixed(2)+" km. "+(dist/1609.344).toFixed(2)+" miles."; 
      }); 
    GEvent.addListener(dirn,"error", function() { 
     GLog.write("Failed: "+dirn.getStatus().code); 
    }); 
console.log(dirn); 

Google API वी 3 में इस तरह से सरल काम नहीं करता है स्नैप,। दिशानिर्देश सेवा की तरह कुछ है लेकिन मुझे नहीं पता कि मैं अपने बिंदुओं के माध्यम से पॉलीलाइन कैसे आकर्षित कर सकता हूं और पॉलीलाइन को सड़क पर स्नैप किया जाएगा।

उत्तर

67

आप दिशा-निर्देश सेवा के साथ सही रास्ते पर थे। इसके अलावा

var map, path = new google.maps.MVCArray(), 
    service = new google.maps.DirectionsService(), poly; 

function Init() { 
    var myOptions = { 
    zoom: 17, 
    center: new google.maps.LatLng(37.2008385157313, -93.2812106609344), 
    mapTypeId: google.maps.MapTypeId.HYBRID, 
    mapTypeControlOptions: { 
     mapTypeIds: [google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID, 
      google.maps.MapTypeId.SATELLITE] 
    }, 
    disableDoubleClickZoom: true, 
    scrollwheel: false, 
    draggableCursor: "crosshair" 
    } 

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    poly = new google.maps.Polyline({ map: map }); 
    google.maps.event.addListener(map, "click", function(evt) { 
    if (path.getLength() === 0) { 
     path.push(evt.latLng); 
     poly.setPath(path); 
    } else { 
     service.route({ 
     origin: path.getAt(path.getLength() - 1), 
     destination: evt.latLng, 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
     }, function(result, status) { 
     if (status == google.maps.DirectionsStatus.OK) { 
      for (var i = 0, len = result.routes[0].overview_path.length; 
       i < len; i++) { 
      path.push(result.routes[0].overview_path[i]); 
      } 
     } 
     }); 
    } 
    }); 
} 

, मेरे काम कर उदाहरण देखें:: यहाँ नमूना कोड http://people.missouristate.edu/chadkillingsworth/mapsexamples/snaptoroad.htm

+0

धन्यवाद, साफ और संक्षिप्त। –

+0

@ चाड-किलिंग्सवर्थ इसलिए यदि मैं इसे सही तरीके से पढ़ रहा हूं, तो आप प्रत्येक क्लिक के साथ दिशा-निर्देशों को कॉल करके अधिकतम 8 मार्ग बिंदु सीमाएं प्राप्त कर सकते हैं, और फिर उन सभी परिणामों को सरणी में संग्रहीत कर सकते हैं? मान लें कि मैं स्वचालित रूप से gmaps-pedometer.com के समान, प्रत्येक 1-मील वृद्धि पर एक मार्कर दिखाना चाहता था; एपीआई का उपयोग कर ऐसा करने के लिए कोई विचार है? –

+0

क्षमा करें, उपरोक्त प्रश्न के दूसरे भाग की उपेक्षा करें; यहां जवाब मिला: http://stackoverflow.com/questions/2698112/how-to-add-markers-on-google-maps-polylines-based-on-distance-along-theline .. बिल्कुल सरल नहीं है और ऐसा लगता है कि इसे v3 के लिए पुन: कार्य करने की आवश्यकता है लेकिन यह सक्षम दिखता है ... –

1

इसका बेहतर सड़कें एपीआई को स्नैप उपयोग करने के लिए, और सही करने के लिए अंतर्वेशन सेट सही snaped पॉलीलाइन मिलता है। https://developers.google.com/maps/documentation/roads/snap

+0

स्थिर नक्शा url में मार्कर जोड़ने के लिए कैसे करें (उदा। और मार्कर = रंग: लाल | लेबल: डी | 54.5661310, -1.2505580)? –

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