Перейти к содержанию
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

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

Ссылка на комментарий
  • 0
В 01.10.2017 в 17:46, Руслан Лыков сказал:

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

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

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

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

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

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

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

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

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

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

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

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