Перейти к содержанию
Fire Monkey от А до Я
  • 0

как получить адрес по карте


janovskis

Вопрос

Здравствуйте знатоки. Пытаюсъ сделать приложение на смартфоне с использованием карты. Не могу понять как мне при установке маркера получить адрес (Страна, город, почтовый индех, улица и номер дома), еще меня интересует васота над уровенем над моря. То ли для всех это само собой ясно, то ли я что-то проглядел. Пожалуйста поделитесъ инфой (желатеЛъно кодом). для IOS и Android. Огромное спасибо!

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Спасибо, это я все нашел, хоть ис опозданием..., но меня интересует как можно ставить свои маркеры с подписями, а пример показывает только текущую позуцию... или я чего-то не понимаю?!?!?! Как изменить текущую позицию на желаемую, и что бы маркер стал туда куда я хочу,а не в середину карты?

Ссылка на комментарий
  • 0

janovskis, почитайте темы в этом же разделе, узнаете много полезного.

Private
  FMarkers: TList<TMapMarker>;
 
procedure Tfmain.FormCreate(Sender: TObject);
begin
  FMarkers := TList<TMapMarker>.Create;
End;
 
Procedure AddMarker;
var 
    mapCenter: TMapCoordinate;
    MyMarker: TMapMarkerDescriptor;
Begin
  mapCenter := TMapCoordinate.Create(StrToFloat(Lat), StrToFloat(Lon));
  MyMarker := TMapMarkerDescriptor.Create(mapCenter, 'Text');
  fmain.MapView1.Location := mapCenter;
  FMarkers.Add(fmain.MapView1.AddMarker(MyMarker));
End;
 

Ссылка на комментарий
  • 0

 

janovskis, почитайте темы в этом же разделе, узнаете много полезного.

Private
  FMarkers: TList<TMapMarker>;
 
procedure Tfmain.FormCreate(Sender: TObject);
begin
  FMarkers := TList<TMapMarker>.Create;
End;
 
Procedure AddMarker;
var 
    mapCenter: TMapCoordinate;
    MyMarker: TMapMarkerDescriptor;
Begin
  mapCenter := TMapCoordinate.Create(StrToFloat(Lat), StrToFloat(Lon));
  MyMarker := TMapMarkerDescriptor.Create(mapCenter, 'Text');
  fmain.MapView1.Location := mapCenter;
  FMarkers.Add(fmain.MapView1.AddMarker(MyMarker));
End;
 

Видимо я задаю не правильно вопрос. Как получить название города и улицы у Сенсора с помощю процедуры,'OnGeocodeReverseEvent' я знаю, и как установить маркер я знаю, но как указать на маркере не 'Text', а настоящую инфу.... я не знаю....

Ссылка на комментарий
  • 0

Вы уже достаточно много знаете... осталось только собрать информацию воедино.

Под настоящей инфой подразумевается Адрес, который определяется по клику на карте?

Значит вам понадобится MapView (понадобится прописать ApiKey в VersionInfo). 

Алгоритм такой - обрабатываете OnMapClick чтобы получить координату для маркера, через Geocoder получаете адрес, с помощью процедуры AddMarker добавляете маркер на карту, указав в качестве Title.

Советую скачать компонент TMapsEngine, с ним очень удобно работать, когда дело касается MapView.

Ссылка на комментарий
  • 0

Вы уже достаточно много знаете... осталось только собрать информацию воедино.

Под настоящей инфой подразумевается Адрес, который определяется по клику на карте?

Значит вам понадобится MapView (понадобится прописать ApiKey в VersionInfo). 

Алгоритм такой - обрабатываете OnMapClick чтобы получить координату для маркера, через Geocoder получаете адрес, с помощью процедуры AddMarker добавляете маркер на карту, указав в качестве Title.

Советую скачать компонент TMapsEngine, с ним очень удобно работать, когда дело касается MapView.

Вы меня извините, я наверное не могу обьяснить что мне надо....ВСЕ!!!!!!! что Вы пишите у меня работает, я получаю... ВСЕГДА!!!!!!!!! только данные моей лоцации....!!!!! я ставлю маркер в другом месте, но адресс остается не изменный! я не понимаю как использовать GEOCODER!?!?!?!?!?!?!

Ссылка на комментарий
  • 0

маркер вы создаете, используя описание маркера MarkerDescription

оно включает в том числе координаты

эти же координаты передавайте при запуске геокодинга

Ссылка на комментарий
  • 0
Спасибо разобрался!!!
Ну почему НИКТО!!!! не напишет, что нужно задать СВОЙ!!!!! TGeocoder в событии клик
 
procedure TfrmBasisStandort.mViewStandartortMapClick(const Position: TMapCoordinate);
var
  myGeocoder: TGeocoder;
  myCoordinat: TLocationCoord2D;
begin
  inherited;
 
  if not Assigned(myGeocoder) then
  begin
    if Assigned(myGeocoder.Current) then
      myGeocoder := TGeocoder.Current.Create;
    if Assigned(myGeocoder) then
      myGeocoder.OnGeocodeReverse := OnGeocodeReverseEvent;
  end;
  // Translate location to address
  myCoordinat.latitude := Position.latitude;
  myCoordinat.longitude := Position.longitude;
  if Assigned(myGeocoder) and not myGeocoder.Geocoding then
    myGeocoder.GeocodeReverse(myCoordinat);
  SetMarker(Position.latitude, Position.longitude);  // Это моя процедура которая ставит маркер, точно такая же как в примере
 
end;
Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...