Android GeoPoint с широтой / долготой - PullRequest
30 голосов
/ 26 августа 2010

Я пытаюсь получить GeoPoint для -23.4456 по 45.44334

Какие значения я передаю в конструктор GeoPoint, поскольку он принимает только Ints.

Ответы [ 4 ]

73 голосов
/ 26 августа 2010

Координаты GeoPoint основаны в микродеградах (градусах * 1e6) - записано здесь

float lat = -23.4456f;
float lng = 45.44334f;
GeoPoint gp = new GeoPoint((int)(lat * 1E6), (int)(lng * 1E6));
30 голосов
/ 27 апреля 2011

вместо того, чтобы повторять математику в моем приложении, я предпочитаю создать LatLonPoint:

private static final class LatLonPoint extends GeoPoint {
    public LatLonPoint(double latitude, double longitude) {
        super((int) (latitude * 1E6), (int) (longitude * 1E6));
    }
}

тогда, где мне нужно создать GeoPoint, и у меня есть широта / долгота, я просто делаю

GeoPoint point = new LatLonPoint(37.234569, -122.123456);

в GeoPoint действительно должен быть конструктор lat / long.

6 голосов
/ 10 сентября 2011

Я взял лат / лонг из этой страницы и написал ее без смысла ... она работала очень хорошо, мой дом там, где он должен быть;)

таквместо (выше) 34.234569 просто напишите 34234569 ... помните: 1e6 - это 1000000, больше ничего;)

2 голосов
/ 04 января 2012

Я нахожу решение, может быть, оно вам поможет.

1) Сначала у вас есть данные (местоположение) в градусах. 2) по уравнению вы должны умножить его на 1000000 3) Теперь у вас есть конкретное местоположение GEO POINT.

Как здесь, если у меня есть местоположение, как: Широта: 23.0395677 и Долгота: 72.5660045 ° Итак, ваша GeoPoint (23039568,72566045);

...