Как получить долготу и широту для конкретного адреса программно (и по закону)

Этот ответ должен быть довольно коротким и сладким, чтобы ответить (часть) озаглавленного вопроса. Если вы хотите получить более подробный ответ, объясняющий, почему вы должны их там поместить, пожалуйста, перейдите здесь .


Общее правило для размещения typename в основном, когда вы используете параметр шаблона, и хотите получить доступ к вложенному typedef или с использованием псевдонима, например:

template
struct test {
    using type = T; // no typename required
    using underlying_type = typename T::type // typename required
};

Обратите внимание, что это также относится к метафункциям или вещи, которые также принимают общие параметры шаблона. Однако, если предоставленный параметр шаблона является явным типом, вам не нужно указывать typename, например:

template
struct test {
    // typename required
    using type = typename std::conditional::type;
    // no typename required
    using integer = std::conditional::type;
};

Общие правила добавления определителя template в основном аналогичны, за исключением они обычно включают шаблонные функции-члены (статические или другие) структуры / класса, которые сами шаблоны, например:

Учитывая эту структуру и функцию:

template
struct test {
    template
    void get() const {
        std::cout << "get\n";
    }
};

template
void func(const test& t) {
    t.get(); // error
}

Попытка доступа t.get() изнутри функции приведет к ошибке:

main.cpp:13:11: error: expected primary-expression before 'int'
     t.get();
           ^
main.cpp:13:11: error: expected ';' before 'int'

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

t.template get()

Таким образом, компилятор будет анализировать это правильно, а не t.get < int.

74
задан Mogsdad 9 December 2013 в 05:03
поделиться

8 ответов

Термин, который Вы ищете, геокодирует и да, Google действительно предоставляет эту услугу.

70
ответ дан Pekka supports GoFundMonica 24 November 2019 в 11:58
поделиться

Можно также сделать это с веб-сервисами MapPoint Microsoft.

Вот сообщение в блоге, которое объясняет как: http://www.codestrider.com/BlogRead.aspx?b=b5e8e275-cd18-4c24-b321-0da26e01bec5

2
ответ дан Stephen Curial 24 November 2019 в 11:58
поделиться

Вы могли также попробовать OpenStreetMap NameFinder, который содержит открытый исходный код, подобные Wiki уличные данные для (потенциально) всего мира. NameFinder прекратит существование в конце августа, но Nominatim является своей заменой.

9
ответ дан peSHIr 24 November 2019 в 11:58
поделиться

Условия предоставления услуг Google позволят Вам использовать их API геокодирования бесплатно, если Ваш веб-сайт будет в свою очередь свободен для потребителей использовать. Если не необходимо будет получить лицензию на Карты Предприятия.

4
ответ дан Craig Wohlfeil 24 November 2019 в 11:58
поделиться

Если Вы хотите сделать это, не полагаясь на сервис, то Вы загружаете Файлы форм ТИГРА от американской переписи.

Вы ищете улицу, которой Вы интересуетесь, который будет иметь несколько сегментов. Каждый сегмент будет иметь начальный адрес и конечный адрес, и Вы интерполируете вдоль сегмента для нахождения, где на сегменте номер дома находится.

Это предоставит Вам lon/lat пару.

Имеют в виду, однако, что онлайн-сервисы используют большой контроль адресов и исправление, которое необходимо было бы копировать также для получения хороших результатов.

Также примечание, что столь хороший, как свободные данные, это не прекрасно - последние улицы, не там (они могли бы быть в употреблении Google данных), и улицы могут быть от их реального местоположения некоторой суммой к получению для рассмотрения погрешностей. Но для 98% геокодирования потребностей это работает отлично, свободно, и Вы управляете всем так, что Вы уменьшаете зависимости в своем приложении.

Openstreetmaps имеет цель отображения всего в мире, хотя они не вполне там, это стоит следить за тем, поскольку они обеспечивают свои данные в соответствии с лицензией

CC Однако многие (большинство?) другие страны только отображаются правительством или сервисами, за которые необходимо внести плату. Если Вы не должны геокодировать особые данные, то с помощью Google, Yahoo, или некоторые из других свободных глобальных услуг по отображению может быть достаточно.

, Если необходимо геокодировать много данных, тогда Вы будете лучше всего обслуживаться путем аренды данных карты от крупного поставщика, такого как телеатлас.

-Adam

15
ответ дан Adam Davis 24 November 2019 в 11:58
поделиться

В дополнение к вышеупомянутому Google, геокодирующий веб-сервис , существует также конкуренция услуга, предоставленная Yahoo. В недавнем проекте, где геокодирование сделано со взаимодействием с пользователем, я включал поддержку обоих. Причина, я нашел, что, особенно за пределами США, их обработка более неясных местоположений значительно различается. Google Sometimes будет иметь лучший ответ, иногда Yahoo.

Один глюк для знания: если Google действительно будет думать, что они не знают, где Ваше место, они возвратят 602 ошибки при указании на отказ. Yahoo, с другой стороны, если это может очистить город/область/состояние/и т.д. из Вашего плохого адреса, возвратит местоположение центра того города. Таким образом, действительно необходимо обратить внимание на результаты, Вы добираетесь, чтобы видеть, действительно ли они, что Вы хотите. Существуют вспомогательные поля в некоторых результатах, которые говорят Вам об этом: Yahoo называет это поле "точностью", и Google называет его "точностью".

22
ответ дан Isuru 24 November 2019 в 11:58
поделиться

Можно взглянуть на документы API Google Maps здесь для получения запуска на этом:

http://code.google.com/apis/maps/documentation/services.html#Geocoding

Это также, кажется, что-то, что можно сделать для международных адресов с помощью Живых Карт также:

http://virtualearth.spaces.live.com/blog/cns!2BBC66E99FDCDB98!1588.entry

2
ответ дан Carl 24 November 2019 в 11:58
поделиться

Google requires you to show a Google map with their data, with a max of 2.5k (was 25k) HTTP requests per day. Useful but you have to watch usage.

They do have

http://groups.google.com/group/Google-Maps-API/web/resources-non-google-geocoders

(Google has since removed this. If you see a duplicate or cache, I'll link to that.)

...in which I found GeoNames which has both a downloadable db, free web service and a commercial web service.

7
ответ дан 24 November 2019 в 11:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: