Регистрация входа пользователя затем геокодируется в базу данных - PullRequest
1 голос
/ 25 августа 2010

У меня было немало проблем с API Карт Google и картой, управляемой базой данных.В предыдущем вопросе я спрашивал о более быстром геокодировании адресов к карте, и в основном мне нужно сохранить Lat / Lng в базе данных и создать карту оттуда вместо геокодирования во время загрузки карты.1002 * Однако я точно не знаю, как это сделать.Я знаю основную посылку - 1) Пользователь регистрируется и вводит в свой адрес.2) База данных должна хранить информацию о пользователе вместе с адресом.3) Адрес должен быть геокодирован, а затем добавлен в поля Lat / Lng в базе данных.4) Маркеры можно затем разместить на карте, просматривая запрос, включающий поля Lat / Lng.

Есть идеи, как это сделать?Я использую ColdFusion, SQL Server.

Ответы [ 2 ]

2 голосов
/ 25 августа 2010

Для этого вы можете использовать Сервис геокодирования Google .API очень прост.Вы отправляете адрес в URL, и он возвращает некоторый xml с геокодированным результатом.Более того, на RiaForge есть проект под названием Google Geocoder v3 , который сделает всю работу за вас.

Вот пример кода CFC:

<cfinvoke component="googlegeocoder3" method="googlegeocoder3" returnvariable="variables.geocode_query1">     
  <cfinvokeargument name="address" value="1600 Amphitheatre Parkway, Mountain View, CA">
  <cfinvokeargument name="ShowDetails" value="false">
</cfinvoke>

<cfdump var="#variables.geocode_query1#">

Что касается того, когда выполнять геокодирование, у вас есть два варианта.Один из них - сделать это при регистрации - взять адрес из регистрационной формы, позвонить в службу геокодирования, чтобы получить широту / долготу, а затем сохранить все в базе данных.Другой вариант - сохранить адрес от регистрации, а затем создать отдельную запланированную задачу для периодической проверки и геокодирования любых негеокодированных адресов.

0 голосов
/ 25 августа 2010

Хорошо поработав с советами Питера и Google Geocoder v3, я собрал свои собственные вещи, потому что Google Geocoder v3 cfc не будет работать.

        <!---Geocode the address and convert it to Lat/Lng --->
        <cfset address2geocode = '#Form.Client_Address#, #Form.Client_City#, #Form.Client_State#'>

        <cfhttp url="http://maps.google.com/maps/api/geocode/xml?address=#address2geocode#&sensor=true" />
        <cfset geocodedXML = #xmlParse(cfhttp.filecontent)#>

      <!--- Add the record to the database--->
      <cfquery datasource="#dsn#" name="AddMember">
        INSERT INTO BSC_Clients (Client_Lng, Client_Lat)
        VALUES ('#geocodedXML.GeocodeResponse.result.geometry.location.lng.XmlText#', '#geocodedXML.GeocodeResponse.result.geometry.location.lat.XmlText#' )
      </cfquery> 

Это будет эффективно принимать указанный адрес + город + штат (выбрасывать всю другую пользовательскую информацию в базу данных, которая не показана в коде) и преобразовывать ее в значения широты / долготы, которые будут сохранены обратно в базу данных. Карта Google должна затем показать новый адрес с помощью маркера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...