• 0
sargon

TmapView отображение маркеров в радиусе

Вопросы

Может быть кто-нибудь такое делал. Подскажите пожалуйста, мне нужно отображать/скрывать маркеры на карте в зависимости от заданного радиуса от местоположения, например радиусы 2,4 и 6 км - если выбираем радиус например 4 км, определяется местоположение (это знаю как сделать) и отображаем все маркеры на карте в радиусе до 4 км, а те что превышают 4 км скрываем. Подтолкните в какую сторону рыть, как это может быть реализовано при помощи TMapView??? Заранее весьма благодарю!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 ответов на этот вопрос

  • 0

тут проблема обозначена вовсе неверно

карта - это лишь отображение информации. сколько маркеров вы на нее поместите, столько их там и будет

соответственно, остается только выбрать из общего числа только те, что в радиусе R. Сделать это элементарно

Их и отобразить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
15 часов назад, krapotkin сказал:

выбрать из общего числа только те, что в радиусе R

мб пригодится кому... моё решение (android)

добавил в прогу TFDSQLiteFunction соединил к FDPhysSQLiteDriverLink и выставил следующее значения: Active = True, ArgumentsCount = 4, FunctionName = 'GPSDist' и в свойстве OnCalculate прописал следующее:

procedure Tdm.FDSQLiteFunction1Calculate(AFunc: TSQLiteFunctionInstance;
  AInputs: TSQLiteInputs; AOutput: TSQLiteOutput; var AUserData: TObject);
begin
  AOutput.AsInteger:= Round(1609.344 * 3958.75 * arccos(
    sin(StrToFloat(AInputs[0].AsString)/57.2958) *
    sin(StrToFloat(AInputs[2].AsString)/57.2958) +
    cos(StrToFloat(AInputs[0].AsString)/57.2958) *
    cos(StrToFloat(AInputs[2].AsString)/57.2958) *
    cos(StrToFloat(AInputs[3].AsString)/57.2958 - StrToFloat(AInputs[1].AsString)/57.2958)));
end;

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

Далее добавленная функция юзалась при выборе точек из SQLite. По типу:

select ...
from .....
where GPSdist(:CenterX, :CenterY, GPSX, GPSY) <= :Dist

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

а при чем тут андроид?

тут как раз решение в общем виде

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
22 часа назад, krapotkin сказал:

тут проблема обозначена вовсе неверно

карта - это лишь отображение информации. сколько маркеров вы на нее поместите, столько их там и будет

соответственно, остается только выбрать из общего числа только те, что в радиусе R. Сделать это элементарно

Их и отобразить

Большое спасибо! 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
22 часа назад, krapotkin сказал:

а при чем тут андроид?

тут как раз решение в общем виде

а, ну да))... в решение же TMapView не участвует ... (пользуясь темой) а TMapView на винде под FMX работает?

Изменено пользователем beklexx

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 28.06.2016 в 13:37, beklexx сказал:

(пользуясь темой) а TMapView на винде под FMX работает?

Нет, только iOS и Android

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
On 6/27/2016 at 00:36, krapotkin said:

существует пример определения маркера в радиусе и определения координат местоположения на расстоянии R

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Edward Tarasov
      Подскажите плз студенту, весь инет перерыл - ничего кроме tmapview не нашел, и тот позволяет только отображать маркеры и прокладывать через них маршрут... ок маршрут проложили а как включить навигацию? чтобы телка сказала - поверни те туда то.... не ясно, и возможно ли вообще такое? 
      Кстатить при использовании tmapview вместо карты - пустой экран.
      вообщем надо передать в tmapview мое местоположение и куда надо идти, затем включить навигацию
      Кто занет как сделать ?????????
      Или может есть возможность использовать встроенные возможности навигации?
    • От Lie Ming
      Может ли кто-нибудь указать примеры FMX.Maps.TMapCircleDescriptor. Я хочу сделать в радиусе 1KM Есть много маркеров. Извините, новичок. Благодарю вас
    • От Вячеслав Холод
      При установке компонента и запуска на устройстве, приложение закрывается через секунду. Знает кто в чем может проблема быть?
      10.2 Токио
       
      ...И еще, какие аналоги есть этого компонента для винды? 
    • От Ерлан
      Возможно ли использовать у компонента TMapView сторонние tile серверы. Например OpenStreetmap.
      задавать свойство, например:
      TileFilename := Format('http://localhost/Map/layer0/%d/256/%d_%d.png',[z, x, y]);  
    • От sargon
      Добрый день, уважаемое сообщество! Может быть кто-то подобное делал - хочу отрисовать маршрут между двумя точками, нужна помощь кодом. Что-то не могу ничего нагуглить похожего, интересует именно реализация (надеюсь гугл не забанил). Прошу помощи или совета. (Во время поисков понял, что нужно делать через GoogleDistance, но не могу понять с какой стороны подступиться)
    • От sargon
      Добрый день, уважаемое сообщество. Возник такой вопрос, по нажатию на маркер на карте нужно показывать свой InfoWindow. как тут. Может быть кто-то такое уже делал, прошу помочь кодом. Попытался сделать как здесь. Там на Java, но я переписал на Delphi. Компилится, но в рантайме выдает Segmentation class (11), AV и проч. может кто-нибудь может подсказать в чем проблема. Делаю так
      ... TMyAndroidInfoWindowAdapter = class (TJavaLocal, JGoogleMap_InfoWindowAdapter) private FMapControl: TAlexAndroidMapView; public function getInfoContents(P1: JMarker): JView; cdecl; function getInfoWindow(P1: JMarker): JView; cdecl; end; ... function TMyAndroidInfoWindowAdapter.getInfoContents(P1: JMarker):JView; var LinearLayout:JLinearLayout; snippet, title:JTextView; begin LinearLayout:=TJLinearLayout.JavaClass.init(TAndroidHelper.Activity); title:=TJTextView.JavaClass.init(TAndroidHelper.Activity); title.setTextColor(TAlphaColorRec.Brown); title.setText(JCharSequence(P1.getTitle)); snippet:=TJTextView.JavaClass.init(TAndroidHelper.Activity); snippet.setTextColor(TAlphaColorRec.Coral); snippet.setText(JCharSequence(P1.getSnippet)); LinearLayout.addView(title); LinearLayout.addView(snippet); result:=LinearLayout; end; function TMyAndroidInfoWindowAdapter.getInfoWindow(P1: JMarker):JView; begin Result:=nil; end; При создании экземпляра JMapView делаю так
      ... if not Assigned(FWindowsAdapter) then FWindowsAdapter:=TAlexAndroidInfoWindowAdapter.Create; FJMapView.getMap.setInfoWindowAdapter(FWindowsAdapter); ... FWindowsAdapter это поле в моем классе
      TMyAndroidMapView = class(TDPFANDBaseControl) protected ... FWindowsAdapter:TAlexAndroidInfoWindowAdapter; MapView не использую реализовал свой контрол на базе dpf android native components Романа Янковского. Ошибки валятся после выполнения этого метода
      function TMyAndroidInfoWindowAdapter.getInfoWindow(P1: JMarker):JView;
      begin
        Result:=nil; <------ выполнился и сразу Class Segmentation Fault (11)
      end;
      Опишу зачем вообще я это делаю. Мне в InfoWindow по клику на маркер на карте нужно всего навсего отобразить текст в несколько строк (свойство маркера Snippet), но так как перенос строк почему-то не работает взялся за реализацию WindowInfoAdapter. Может быть все это проще можно сделать. Заранее благодарю за помощь.
    • От sargon
      Добрый день, уважаемые форумчане, прошу помощи! Кидаю на форму компонент TMapView, все делаю как по инструкции - все работает, карта отображается вопросов никаких нет по этой части. Возник вопрос по поведению TMapView. При старте приложения форма отображается потом мигает и появляется компонент TMapView. У всех ли так? В наличии есть пример, где ничего не моргает (пример в виде apk) когда собираю этот же пример из исходников мигания тоже есть. Кода в проекте никакого нет. Просто разместил компонент на форме выставил все галочки прописал ключ из гугл консоль. Посоветуйте как устранить пожалуйста, если это вообще возможно. Или подскажите если что делаю не так. Заранее благодарю за ответы. 
      P.S. Проверял в нескольких IDE. В RAD Studio 10.1 тоже самое. Собираю с SDK под 6-ой Android. Проверяю на устройствах с 5.1.1 и 4 андройдами. (На эмуляторах миганий не наблюдается, только на устройствах) 
    • От Liberator
      Доброго времени суток.
       
      Кто-нибудь озадачивался примерно таким вопросом:
      По долгому тапу по карте (или по двойному на маркере) вывести в этой точке контекстное меню?
      Просьба не объяснять, что нет такого компонента "контекстное меню" в FMX. Разумеется, это панель с пунктами, сделанными так или иначе. Проблема в том, что MapView не дает никому быть поверх себя. 
      Если есть у кого наработки или мысли - буду признателен!
       
    • От Brown1993
      Добрый день!
      Подскажите пожалуйста, как я знаю компонент TMapView используется только под мобильные платформы. Подскажите пожалуйста каким образом реализовать данный компонент и под Win и под Mac OS.
    • От ArturAD
      Добрый день!
       
      Пытаюсь сделать скриншот карты с помощью функции MakeScreenshot в итоге получаю черный прямоугольник.
  • Последние посетители   0 пользователей онлайн

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