-
Постов
1 204 -
Зарегистрирован
-
Посещение
-
Победитель дней
26
Весь контент Rusland
-
Почему первый символ слеш? Может проще программу keytool скопировать в нужную папку и оттуда запустить.
-
enatechno, kitty спасибо. Уже выложили. Даже ZuBy там засветился c TMapsEngine
-
Сегодня начал определять адрес через HERE (код не менял) Кстати вчера вечером программа повисла когда я сел в автобус (несколько раз нажимал Подождать, но программа не очнулась). Возможно дело в том что интернет на телефоне очень слабый (GPRS). Вам просто нужно добавить MapsEngine.pas (предварительно убрав точку в названии файла) в свой проект: Project -> Add to project При компиляции C++Builder сам создаст заголовочный файл MapsEngine.hpp, делаете #include "MapsEngine.hpp" и сможете использовать класс TMapsEngine. PS. А лучше переходите на Delphi, народу больше на нем сидит PPS. А сейчас у Абракадабры идет вебинар по использованию TMapView (зарегистрироваться не успел). Кто-нибудь знает этот вебинар потом можно будет где-то посмотреть?
-
Замечательный движок. Мне понравился Но почему-то не заработал через сервис HERE, хотя App_Id и App_Code указал в mEngine.SetOptionsHere(... , ...)
-
Получаю аналогичную ошибку "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?
-
Действительно заменил на 0 и он стал также быстро менять координаты (правда пока не пробовал вывести на карту). Кстати, меня несколько разочаровало что с LocationSensor на карте отображается маркер-дергунчик - то есть когда я пешком иду по улице с телефоном, то перемещение не плавное, а как бы скачками (а вот приложения типа Яндекс.Навигатор при этом идут без рывков)... может тут будет плавнее. Было бы замечательно! ApiKey естественно имеется. А вот про остальные пока не в курсе, буду читать. Про сервис Here вообще узнал впервые от вас ) Посмотрел их карту, довольно шустрая. В общем пошел пока изучать PS. Знаю еще карту openstreetmap, но не знаю есть ли у нее свой API PPS. App_Id и App_Code получил (бесплатно выдаются лишь на 90 дней) ))
-
Запустил программу, поставил галочки 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, вообще ничего что я в этой теме столько пишу?
-
По умолчанию есть кнопки Увеличения/Уменьшения масштаба. Хотелось бы добавить кнопку "Мое местоположение" (как на гугло-карте). Типа как на картинке: https://lh5.ggpht.com/4LB_iQyq0tvcDgHAMORnFoyVdDepdes1H9V6Q1U5DESNLI8EgL_kHdj51PryelKQUlb7=h310-rw Кнопки похожи на стандартные. Есть ли такая возможность у этого компонента? (где вообще можно узнать о возможностях компонента?) Или нужно кидать на компонент свои Button-ы и обрабатывать действия?
-
Я вот тоже прикрутил 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. Как правильно узнать скорость?
-
Наверное глупые вопрос, но... Есть ли возможность дебага приложения запущенного на Андроид? Если например установить симулятор? Или можно только использовать логирование?
-
Можете пошагово рассказать как правильно создать Api Key для приложения? Я создал, добавил в проект, вижу пустое белое окно вместо карты видимо не правильно ключ формирую
-
Что за нативные способы? Можно код, если не секрет?
-
Очень часто вижу реализацию через Мемо напрямую, в частности на этом форуме Странно что там у людей работало ) Объясните пожалуйста как правильно сделать Synchronize? (Выше приведенный код не работает) И почему это исключение не вываливается на экран как ошибка, а приложение просто берет и закрывается?
-
Brovin Yaroslav, не уверен что понял... кто создал тот другой поток, LocationSensor (я то потоков не создаю)? Из-за этого возникает ошибка при обращении к переменным LSensor.Sensor.Latitude и LSensor.Sensor.Longitude ? Тогда как объяснить то что программа работает, если я значения записываю в Label-ы (программа тоже должна рушиться)? UI? Напомню, что приложение я запускаю на своем телефоне Android (вер.4.2.2)
-
ZuBy, а мне например непонятно что такое accuracy (точность)? Как он влияет на выдаваемые координаты GPS? PS. Вообще задача GPS-трекера очень интересная - если телефон на андроиде, то всегда можно узнать например где ребенок или пожилой человек.
-
Происходит непонятное явление при определении 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, то программа не закрывается.