getLatitudeE6 () возвращает неправильное значение - PullRequest
2 голосов
/ 01 августа 2011
    public boolean onTap(GeoPoint p, MapView mapView) {

        String msg;
        double d1 = p.getLatitudeE6()/1E6;
        double d2 = p.getLongitudeE6()/1E6;
        String str1 = Location.convert(d1, Location.FORMAT_DEGREES);
        String str2 = Location.convert(d2, Location.FORMAT_DEGREES);
        msg = "x = "+ p.getLatitudeE6() +
                ", y = "+ p.getLongitudeE6();
        Toast.makeText(MapViewActivity.this, msg, Toast.LENGTH_LONG).show();
        return true;
    }

Я только что сделал этот код, чтобы увидеть широту и долготу, где палец коснется устройства Android.

Я полагаю, в моем коде проблема или ошибка в функции 'getLatitudeE6', предоставленная

Google. Как вы знаете, широта идет только от -90 до +90 градусов, но когда я нажимаю на местоположение около

Антарика, особенно ниже, вижу только -80. Другими словами, широта ограничена от -80 до 80

градусов. Это моя вина или ошибка Google?

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Если вы проверите документ API, он говорит:

Широта: она будет ограничена от -80 градусов до +80 градусов включительно, чтобы сохранить точность в проекции Меркатора.

Это связано с тем, что вблизи полюсов проекция Меркатора теряет точность.

2 голосов
/ 01 августа 2011

Вы "касаетесь Антарктиды", я думаю, вы используете MapView для получения координат.MapView использует проекцию Меркатора в качестве проекции карты, и недостатком этой проекции является то, что она бесполезна вокруг полюсов, где вы хотите нажать в этом случае.Так что я думаю, что северного полюса и южного полюса даже нет на карте.Так что это ограничение используемой проекции карты.

Если вы хотите хорошую карту Антарктиды, вы должны использовать другую карту проекции , но я не знаю, если этовозможно с представлением карты.Однако я знаю, что вы можете изменить проекцию карты в Картах Google как минимум.

...