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

Rusland

Пользователи
  • Постов

    1 204
  • Зарегистрирован

  • Посещение

  • Победитель дней

    26

Весь контент Rusland

  1. Почему первый символ слеш? Может проще программу keytool скопировать в нужную папку и оттуда запустить.
  2. enatechno, kitty спасибо. Уже выложили. Даже ZuBy там засветился c TMapsEngine
  3. Сегодня начал определять адрес через HERE (код не менял) Кстати вчера вечером программа повисла когда я сел в автобус (несколько раз нажимал Подождать, но программа не очнулась). Возможно дело в том что интернет на телефоне очень слабый (GPRS). Вам просто нужно добавить MapsEngine.pas (предварительно убрав точку в названии файла) в свой проект: Project -> Add to project При компиляции C++Builder сам создаст заголовочный файл MapsEngine.hpp, делаете #include "MapsEngine.hpp" и сможете использовать класс TMapsEngine. PS. А лучше переходите на Delphi, народу больше на нем сидит PPS. А сейчас у Абракадабры идет вебинар по использованию TMapView (зарегистрироваться не успел). Кто-нибудь знает этот вебинар потом можно будет где-то посмотреть?
  4. Замечательный движок. Мне понравился Но почему-то не заработал через сервис HERE, хотя App_Id и App_Code указал в mEngine.SetOptionsHere(... , ...)
  5. Получаю аналогичную ошибку "blocking dialogs not implemented on this platform" при использовании InputQuery try if InputQuery( 'Enter New Item', 'Name', TaskName) and (TaskName.Trim <> '') then begin FDQueryInsert.ParamByName('ShopItem').AsString := TaskName; FDQueryInsert.ExecSQL(); FDQuery1.Close; FDQuery1.Open; end; except on e: Exception do ShowMessage(e.Message); end; Подскажите что дописать в InputQuery?
  6. Действительно заменил на 0 и он стал также быстро менять координаты (правда пока не пробовал вывести на карту). Кстати, меня несколько разочаровало что с LocationSensor на карте отображается маркер-дергунчик - то есть когда я пешком иду по улице с телефоном, то перемещение не плавное, а как бы скачками (а вот приложения типа Яндекс.Навигатор при этом идут без рывков)... может тут будет плавнее. Было бы замечательно! ApiKey естественно имеется. А вот про остальные пока не в курсе, буду читать. Про сервис Here вообще узнал впервые от вас ) Посмотрел их карту, довольно шустрая. В общем пошел пока изучать PS. Знаю еще карту openstreetmap, но не знаю есть ли у нее свой API PPS. App_Id и App_Code получил (бесплатно выдаются лишь на 90 дней) ))
  7. Запустил программу, поставил галочки GPS Enabled, Network Enabled, жму Load Providers и получаю широту и долготу. Но после этого они больше не меняются (хоть я конечно и сижу на месте перед окном ) в отличии от варианта когда используется LocationSensor (с ним у меня маркер постоянно движется туда сюда). Почему так? Я тоже сделал реверс геокодинг вот так: private FGeocoder: TGeocoder; procedure OnGeocodeReverseEvent(const Address: TCivicAddress); procedure TForm1.OnGeocodeReverseEvent(const Address: TCivicAddress); begin TThread.Queue(nil, procedure begin Info.Text:=''; LbiAdminArea.ItemData.Detail := Address.AdminArea; LbiCountryCode.ItemData.Detail := Address.CountryCode; LbiCountryName.ItemData.Detail := Address.CountryName; LbiFeatureName.ItemData.Detail := Address.FeatureName; LbiLocality.ItemData.Detail := Address.Locality; LbiPostalCode.ItemData.Detail := Address.PostalCode; LbiSubAdminArea.ItemData.Detail := Address.SubAdminArea; LbiSubLocality.ItemData.Detail := Address.SubLocality; LbiThoroughfare.ItemData.Detail := Address.Thoroughfare; LbiSubThoroughfare.ItemData.Detail:= Address.SubThoroughfare; end); end; procedure TForm1.LSensorLocationChanged(Sender: TObject; const OldLocation, NewLocation: TLocationCoord2D); begin ///. .. try // реверсивная геолокация if not Assigned(FGeocoder) then begin if Assigned(TGeocoder.Current) then FGeocoder := TGeocoder.Current.Create; if Assigned(FGeocoder) then FGeocoder.OnGeocodeReverse := OnGeocodeReverseEvent; end; if Assigned(FGeocoder) and not FGeocoder.Geocoding then FGeocoder.GeocodeReverse(NewLocation); except Info.Text:='Ошибка Geocoder'; ClearAdress(); FGeocoder.Free; FGeocoder:=nil; end; end; И работает хорошо, но до первой ошибки. Если связь по WiFi или GPRS обрывается, то вываливается ошибка о Timeout-е и после этого на строку FGeocoder.GeocodeReverse(NewLocation); больше не попадает. Что я делаю не так? Круто! А какой компонент используется для отображения карт, TWebBrowser? Формулу для расчета по прямой я уже нашел (не думаю что она вообще может быть полезной ) А вот не поделитесь с общественностью кодом для расчета расстояния по дороге? (коли не жалко) PS. ZuBy, вообще ничего что я в этой теме столько пишу?
  8. Rusland

    [TMapView] кнопки на карте

    По умолчанию есть кнопки Увеличения/Уменьшения масштаба. Хотелось бы добавить кнопку "Мое местоположение" (как на гугло-карте). Типа как на картинке: https://lh5.ggpht.com/4LB_iQyq0tvcDgHAMORnFoyVdDepdes1H9V6Q1U5DESNLI8EgL_kHdj51PryelKQUlb7=h310-rw Кнопки похожи на стандартные. Есть ли такая возможность у этого компонента? (где вообще можно узнать о возможностях компонента?) Или нужно кидать на компонент свои Button-ы и обрабатывать действия?
  9. Вот спасибо огроменное! Заменил Synchronize на Queue и не зависает теперь при вызове из LocationChanged (не люблю Timer-ы) PS. помогите кто-нибудь Kitty
  10. Я вот тоже прикрутил TMapView и в зависимости от показаний LocationSensor ставлю на карте Маркер текущего положения. Поставил Timer и в нем вызываю вот такую процедуру: procedure TForm2.SetMarker(); var Descr: TMapMarkerDescriptor; MyLocation: TMapCoordinate; begin TThread.Synchronize(nil, procedure begin try if (TabControl.ActiveTab=TabMap)and((PrevLat<>LSensor.Sensor.Latitude) or (PrevLon<>LSensor.Sensor.Longitude)) then begin PrevLat:=LSensor.Sensor.Latitude; PrevLon:=LSensor.Sensor.Longitude; MyLocation:=TMapCoordinate.Create(LSensor.Sensor.Latitude,LSensor.Sensor.Longitude); MapView.Location:=MyLocation; Descr:=TMapMarkerDescriptor.Create(MyLocation); Descr.Draggable:=True; if Assigned(MyMarker) then MyMarker.Remove; // удаляю предыдущий маркер MyMarker:=MapView.AddMarker(Descr); // добавляю на карту новый end; except ShowMessage('Произошла непредвиденная ошибка'); end; end); end; Во-первых, на текущий момент программа периодически закрывается, хоть и используется Synchronize. От чего это может происходить? Во-вторых, если я вызываю эту процедуру прямо из обработчика LocationChanged, то программа зависает. Нельзя слишком часто обращаться к компоненту MapView? Можно ли как-то узнать что в MapView загрузка завершена? Ничего лучше кроме маркера не придумал. Может есть другие варианты указания текущего местоположения? Есть параметр скорость LSensor.Sensor.Speed - но он показывает что-то странное. При движении 40-50км в час, он показывает 9-10. Как правильно узнать скорость?
  11. Наверное глупые вопрос, но... Есть ли возможность дебага приложения запущенного на Андроид? Если например установить симулятор? Или можно только использовать логирование?
  12. Можете пошагово рассказать как правильно создать Api Key для приложения? Я создал, добавил в проект, вижу пустое белое окно вместо карты видимо не правильно ключ формирую
  13. Спасибо. Не вылетает Теперь становится яснее. C какими еще компонентами кроме Memo надо работать через Synchronize? Какое ограничение на размер строк в Мемо?
  14. Kitty, наверное что-то типа: TThread::Synchronize( void { Memo1->Lines->Add(""); }); но не уверен
  15. Что за нативные способы? Можно код, если не секрет?
  16. Очень часто вижу реализацию через Мемо напрямую, в частности на этом форуме Странно что там у людей работало ) Объясните пожалуйста как правильно сделать Synchronize? (Выше приведенный код не работает) И почему это исключение не вываливается на экран как ошибка, а приложение просто берет и закрывается?
  17. Brovin Yaroslav, не уверен что понял... кто создал тот другой поток, LocationSensor (я то потоков не создаю)? Из-за этого возникает ошибка при обращении к переменным LSensor.Sensor.Latitude и LSensor.Sensor.Longitude ? Тогда как объяснить то что программа работает, если я значения записываю в Label-ы (программа тоже должна рушиться)? UI? Напомню, что приложение я запускаю на своем телефоне Android (вер.4.2.2)
  18. ZuBy, а мне например непонятно что такое accuracy (точность)? Как он влияет на выдаваемые координаты GPS? PS. Вообще задача GPS-трекера очень интересная - если телефон на андроиде, то всегда можно узнать например где ребенок или пожилой человек.
  19. Происходит непонятное явление при определении GPS-координат. На форме TLocationSensor (LSensor) для получения координат, TMemo (Memo1) для вывода информации и несколько Label (LabLat, LabLon). Вот такой код procedure TForm1.LSensorLocationChanged(Sender: TObject; const OldLocation, NewLocation: TLocationCoord2D); var Lat,Lon:String; begin try Lat:=LSensor.Sensor.Latitude.ToString; Lon:=LSensor.Sensor.Longitude.ToString; LabLat.Text:='Широта: '+Lat; LabLon.Text:='Долгота: '+Lon; Memo1.Lines.Add(Lat+';'+Lon); finally end; end; рушит программу... бывает что координаты успевают передаться в Memo и программа закрывается, а бывает что программа несколько минут исправно выводит данные и лишь затем закрывается. Кто виноват? Что делать? Можно ли как-то отловить ошибку и записать, например, в лог-файл (чтобы понять какой компонент виноват)? Если убираю Memo, то программа не закрывается.
×
×
  • Создать...