Marker
класса имеет Position
свойство, так
double latitudeDifferenceInDegrees = marker1.getPosition().latitude - marker2.getPosition().latitude;
double longitudeDifferenceInDegrees = marker1.getPosition().longitude - marker2.getPosition().longitude;
Вы можете преобразовать разность широты в расстояние в метрах - каждая степень равна 110.574 kilometers:
double latitudeDifferenceInMeters = latitudeDifferenceInDegrees * 110574;
Вы не можете сделать то же самое для долготы. На экваторе долгота составляет около 111 км, но около полюсов она намного меньше. Если вы только использовать это для коротких расстояний, я бы на
double longitudeDifferenceInMeters = longitudeDifferenceInDegrees * 111320 * Math.cos((marker1.getPosition().latitude + marker2.getPosition().latitude)/2);
Обратите внимание, что оба может дать отрицательные значения, если первый маркер находится к югу или к западу от второго маркеров. Если вас интересуют только положительные значения, примените Math.abs()
.
Не будет ли это чем-то вроде 'Math.abs (loc1.getLatitude() - loc2.getLatitude())' где 'loc1' и' loc2' - ваши местоположения? –