Usé dividir y unir para intercambiar latitud y longitud de las coordenadas. Estoy usando un folleto para obtener las coordenadas y como polilínea, el intercambio de coordenadas funciona bien, pero cuando lo hago con un marcador, el último dígito de la latitud y el primer dígito de la longitud desaparecen.
Este es el código, como pueden ver son el mismo código
if (type === 'polyline') { const res = ["[" + tmp.map( x => '[' + swapLatLon( stripFirstLast(x).split(', ') ).join(', ') + ']' ).join(', ') + "]" ]; document.getElementById("polyline").value = res; } else if (type === 'marker') { const res = ["[" + tmp.map( x => '[' + swapLatLon( stripFirstLast(x).split(', ') ).join(', ') + ']' ).join(', ') + "]" ]; document.getElementById("marker").value = res; } else { console.log('__undefined__'); } Este es un resultado de muestra para res
Original: [37.0902, 95.7129]
Expectativa: [[95.7129, 37.0902]]
Realidad: [[95.712, 7.0902]]
Si solo desea intercambiar lugares de dos variables en una matriz, utilice la deconstrucción .
const tmp = [37.0902, 95.7129] let [long, lat] = tmp; let res = [[lat, long]]; let type; if (type === 'polyline') { document.getElementById("polyline").value = res; } else if (type === 'marker') { document.getElementById("marker").value = res; } else { console.log('__undefined__'); } console.log({tmp}) console.log({res})split y join son inversos uno del otro. Es probable que el problema esté en otra parte del procesamiento de datos.
En cualquier caso, aquí hay una solución directa de una línea utilizando los ejemplos de datos que proporcionó:
x = "[37.0902, 95.7129]" swapped = "[" + x.slice(1,-1).split(", ").reverse().join(", ") + "]"