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

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


sargon

Вопрос

Опубликовано

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

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

  • 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
Опубликовано
22 часа назад, krapotkin сказал:

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

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

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

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

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

  • 0
Опубликовано (изменено)
22 часа назад, krapotkin сказал:

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

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

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

Изменено пользователем beklexx
  • 0
Опубликовано
В 01.10.2017 в 17:46, Руслан Лыков сказал:

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

Мне бы сейчас мои исходники... Снова взялся за этот проект

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить на вопрос...

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

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

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

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

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

×
×
  • Создать...