Yığınlama akışında bu soruna bir çözüm arıyordum ama doğru çözümü bulamadığım için kendim çözdüm ve buraya gönderiyorum, umarım yardım et.Google Haritalar'da her polyline segmentinde bir ok nasıl çizilir V3
Google Maps, bir koordinat listesi temelinde tümünü birleştiren bir dizi çizgi çizebilen Polyline özelliğini sunar.
Aşağıdaki kod ile tek okla bir poligon çizebilirsiniz:
var allCoordinates = [
new google.maps.LatLng(26.291, 148.027),
new google.maps.LatLng(26.291, 150.027),
new google.maps.LatLng(22.291, 153.027),
new google.maps.LatLng(18.291, 153.027)
];
var polyline = new google.maps.Polyline({
path: allCoordinates,
strokeColor: color,
strokeOpacity: 1.0,
strokeWeight: 2,
geodesic: true,
icons: [{
icon: {path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW},
offset: '100%'
}]
});
Buradaki sorun ok sadece bir sonraki resimde gösterildiği gibi son segmentte çizilmiş, ancak bazen edilecek olmasıdır rota çok kolay olmayabilir ve her segmente bir ok eklememiz gerekiyor.
Simge tanımındaki "tekrarla" özelliği başka bir seçenek olabilir, ancak yalnızca piksel cinsinden bir ölçüm tanımlamaya izin verir ve bu özellik, piksel çizgisindeki her yön değişikliği ile uyuşmayacaktır.
Yani, bir şekilde ben bu, bu durumda ok izin segmentin başına birer birinde çekilecek için birkaç polylines yapmaktı başarmak bulundu. Bu kodu verilmiştir:
var allCoordinates = [
new google.maps.LatLng(26.291, 148.027),
new google.maps.LatLng(26.291, 150.027),
new google.maps.LatLng(22.291, 153.027),
new google.maps.LatLng(18.291, 153.027)
];
for (var i = 0, n = allCoordinates.length; i < n; i++) {
var coordinates = new Array();
for (var j = i; j < i+2 && j < n; j++) {
coordinates[j-i] = allCoordinates[j];
}
var polyline = new google.maps.Polyline({
path: coordinates,
strokeColor: color,
strokeOpacity: 1.0,
strokeWeight: 2,
geodesic: true,
icons: [{
icon: {path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW},
offset: '100%'
}]
});
polyline.setMap(map);
polylines.push(polyline);
}
Ve bu resim geçerli:
bu böyle bir şey arıyor herkes için çalışır umut!
Bir rota boyunca ok yerleştirmenin bir yolunu arıyorum. Bu yol, Google Maps DirectionService aracılığıyla (size sahip olduğunuz koordinatlardan geçen rotayı size veren) bir polyline yolunun yolu olacaktır. Burada sunduğunuz çözüm, iyi ayrılmış köşelere sahip, kendi kendine çizilmiş bir poligon için iyidir. Ancak DirectionService tarafından çizilen poligonun köşeleri çok yakın olabilir (örneğin bir dönel çizme yapmak için kullanılan köşe noktaları). Bu durumda harika çözümünüz geçerli değil. Kimsenin bahsettiğim problem için bir çözümü varsa, gerçekten duymak isterim. –
Açıkladığım çözüm, rota boyunca okların çizilmesi içindir. Aradığın çözüm, çok kısa genişlikteki (çok fazla yakın) segmentler için ok eklenmesini engelleme dışında bunu yapmaktır. Yukarıdaki algoritmayı uyarlamak çok zor değil, her bir koordinat için her iki koordinat arasındaki mesafeyi ("for" içinde) kontrol etmelisiniz ve eğer istediğiniz eşiğin altındaysa, bu durumda simge olmadan bir polyline oluşturun, aksi takdirde polyline ekleyin geçerli ok simgesiyle. Umut ediyorum bu yardım eder! –