Web uygulamamda işaretçiler oluşturabilir ve bu işaretçilerle google yol tarifi içeren bir rota oluşturabilirsiniz. Ancak, kullanıcının rotayı değiştirebilmesini ve google maps api v3'te sürüklenebilir yol tarifleri bulmasını istiyorum. Değiştirilen yönleri veritabanında saklamak için bir yol var mı, böylece bu yolla kesin rotayı yeniden oluşturabilirsiniz? Aşağıdaki varsaymak gidiyorumGoogle maps sürüklenen yol tariflerini kaydediyor
cevap
tüm doğrudur: Temelde
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 8,
center: new google.maps.LatLng(/* center of map */),
mapTypeId: google.maps.MapTypeId.ROADMAP
}),
directions = new google.maps.DirectionsService(),
displayer = new google.maps.DirectionsRenderer({
draggable: true
});
displayer.setMap(map);
directions.route({
origin: new google.maps.LatLng(/* start point */),
destination: new google.maps.LatLng(/* end point */),
travelMode: google.maps.DirectionsTravelMode.DRIVING
}, function (result) {
displayer.setDirections(result);
});
, bu sadece başlangıç ve bitiş noktaları zaten seçilmiş ve varsayılan rota zaten çizilmiş olduğunu varsayar. (Not:DirectionsRenderer
draggable: true
ile başlatıldı.)
kullanım yol değişikliği, uygulama directions_changed
olayı tetikler. Biz şöyle olduğunu izleyebilirsiniz: Başka
google.maps.event.addListener(displayer, 'directions_changed', some_method);
şey değişim rota zaman da olur: Yeni waypoint
oluşturulur.
var some_method = function() {
var waypoints = displayer.directions.route[0].legs[0].via_waypoint;
};
değişken waypoints
rota hedefe yolunda yapar durur açıklayan nesnelerin bir dizidir: Hepimizin ara nokta almak şekli aşağıdaki gibidir. (Daha fazla varsayımlar yapıldığını Not: route[0]
, legs[0]
vb kullandığınız)
Her waypoint
nesne (nedense sırasıyla location.wa
ve location.ya
mevcut) enlem ve boylam içeren bir location
özelliğine sahiptir . Bu yüzden, kullanıcı rotayı her değiştirdiğinde uygulamayı, mevcut yol noktalarının tüm latekslerini ve uzunlarını döndürmek (ve saklamak) için söyleyebiliriz. Bunları aldıktan sonra, bunları nasıl depolamak istediğinize karar verebilirsiniz (AJAX, bunları bir veritabanında saklayan bir sunucu tarafı sayfasına, localStorage
, vb.)
Sonra!
bu sayfayı yüklemek dahaki sefere depolama gelenler noktalarını kapmak ve şöyle rotayı başlatabilir:
directions.route({
origin: new google.maps.LatLng(/* start point */),
destination: new google.maps.LatLng(/* end point */),
travelMode: google.maps.DirectionsTravelMode.DRIVING,
waypoints: [
{ location: new google.maps.LatLng(/* lat/lng go here */) } // repeat this as necessary
]
}, function (result) {
displayer.setDirections(result);
});
Bu kullanıcı seçtiği yeni bir rota muhafaza edilmelidir. Son bir not: 'u bu yanıtın dışına bıraktım, gibi'u nasıl kaydettiklerini, hangi kullanıcının hangi rotayı istediğini nasıl bildiğinizi vb. Ama temel var. Yolunuz açık olsun.
teşekkürler! bunu deneyecek – qkp
@qkp Cevabın kabul edilebilmesi için yeterince teşekkürler ...? – sdleihssirhc
Denedim, ancak yol tarifi servis çağrısı sırasında hatalar aldım! api'de neden maksimum yol noktaları 10 durak olduğunu ve özel bir yolun daha fazla durduğunu söyler, bu yüzden neden onu değiştirmeye karar verdim. Ben tüm polyline şifreli polyline tho olarak kaydederek etrafında bir iş yaparak sabit! – qkp
Bu, sdleihssirhc'nin yanıtı arasında değişen bir şey olabilir, ancak yukarıdaki çözümü denedim ve displayer.directions.route [0] undefined olduğunu söyleyerek başarısız oldu.
Bu özellik routes
olarak değiştirilmiş gibi görünüyor. Benim için işler aşağıda hattıyla:
var waypoints = displayer.directions.routes[0].legs[0].via_waypoint;
Umarım bu işe almaya çalışırken herkes için biraz zaman ve hayal kırıklığı kurtaracak.
- 1. Api google maps - Yol Tarifi hizmet yanıtı
- 2. Google Maps API [Yol API'sı] Yol noktaları sınırlaması?
- 3. Google Maps'ten sürüklenen rota verisi alma
- 4. Google Haritalar HTTP sürüş ve yol tarifi için API API
- 5. Android - Google Maps yönlendirme
- 6. Android Google Maps v2 -
- 7. google maps api
- 8. google maps api kullanmadan yol tarifi nasıl yapılır
- 9. Bir harita kullanmadan google maps api ile yol al
- 10. Google Static Maps API:
- 11. Google Version Haritalar'daki sürüklenen bir işaretçiden biçimlendirilmiş adres nasıl alınır?
- 12. Google Maps: Google Maps V3 ve ben kullanıyorum
- 13. Google Maps API ile Google Maps Engine arasında mı?
- 14. Google Maps V2 MapView
- 15. Google Maps v3 - mil
- 16. Android Google Maps ClassNotFoundException
- 17. Google Maps API (statik)
- 18. Bir Google Maps InfoWindow
- 19. Google Maps url
- 20. Google Maps Kabarcık Şablonları
- 21. laravel projesinde google maps
- 22. google maps v3
- 23. Google Maps ve DART
- 24. Google Maps görünmüyor
- 25. Android Google Maps set maxBounds
- 26. Android PhoneGap - Yerli Google Maps Uygulamasını
- 27. google maps: doğrudan google sunucusunda kullan?
- 28. Google, Google Maps Street View In
- 29. Google maps geocoder bekleniyor mu?
- 30. Google Maps Polyline - Nasıl kaldırırım?
Hangi 3 sürümünü kullanıyorsunuz? 0,1, 0,2 veya 0,3? – sdleihssirhc
@sdleihssirhc API'nin –
@Sam Sürüm 3'ü: Neredeyse hiçbir teknik özellik içermeyen bu soruya bir ödül vermek iyi bir fikir değildir ... örneğin, JS tarafından oluşturulan ilk işaretçiler mi, yoksa haritaya tıklayarak kullanıcı mı? yol tarifi ne olacak? talimatlar tam olarak ne zaman DB içinde saklanmalıdır? hemen? veya kaydetmeyi onaylamak için her sürüklemeden sonra bir açılır pencere gösterilmeli mi? Şimdiye kadar yaptığınız şeyi yapıştırın [pastebin] (http://pastebin.com/) – ifaour