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

Как изменить картинку маркеру?


Rusland

Вопрос

Делаю так

procedure TFormMain.MapViewMarkerDoubleClick(Marker: TMapMarker);
begin
  Marker.Descriptor.Icon.Assign(ImageListMarker.Source[0].MultiResBitmap.Items[0].Bitmap);
end;

ничего не происходит.

 

Как изменить картинку маркеру при двойном клике?

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

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

  • 0
  • Модераторы

Делаю так

procedure TFormMain.MapViewMarkerDoubleClick(Marker: TMapMarker);
begin
  Marker.Descriptor.Icon.Assign(ImageListMarker.Source[0].MultiResBitmap.Items[0].Bitmap);
end;

ничего не происходит.

 

Как изменить картинку маркеру при двойном клике?

создать нужно изначально

Marker.Descriptor.Icon := TBitmap.Create;

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

создать нужно изначально

Marker.Descriptor.Icon := TBitmap.Create;

Как создать понятно. Непонятно как изменить :)

 

 

Вот я создаю маркер

var
  Descrip: TMapMarkerDescriptor;
  MyLocation: TMapCoordinate;
begin
  MyLocation:=TMapCoordinate.Create(Lat,Lon);
  Descrip:=TMapMarkerDescriptor.Create(MyLocation);
  Descrip.Icon:=ImageListMarker.Source[0].MultiResBitmap.Items[1].Bitmap; /// в ImageList у меня хранятся картинки
  Descrip.Draggable:=True;
  Descrip.Title:='Title'; 
  Descrip.Snippet:='Snippet';
  MyMarker:=MapView.AddMarker(Descrip); // появляется маркер с первой картинкой
  FMarkers.Add(MyMarker);
end;

если я пытаюсь загнать в маркер другой Bitmap, то ничего не происходит

Marker.Descriptor.Icon.Assign(ImageListMarker.Source[0].MultiResBitmap.Items[0].Bitmap); // картинка не меняется
Изменено пользователем Rusland
Ссылка на комментарий
  • 0
  • Модераторы

 

создать нужно изначально

Marker.Descriptor.Icon := TBitmap.Create;

Как создать понятно. Непонятно как изменить :)

 

 

Вот я создаю маркер

var
  Descrip: TMapMarkerDescriptor;
  MyLocation: TMapCoordinate;
begin
  MyLocation:=TMapCoordinate.Create(Lat,Lon);
  Descrip:=TMapMarkerDescriptor.Create(MyLocation);
  Descrip.Icon:=ImageListMarker.Source[0].MultiResBitmap.Items[1].Bitmap; /// в ImageList у меня хранятся картинки
  Descrip.Draggable:=True;
  Descrip.Title:='Title'; 
  Descrip.Snippet:='Snippet';
  MyMarker:=MapView.AddMarker(Descrip); // появляется маркер с первой картинкой
  FMarkers.Add(MyMarker);
end;

если я пытаюсь загнать в маркер другой Bitmap, то ничего не происходит

Marker.Descriptor.Icon.Assign(ImageListMarker.Source[0].MultiResBitmap.Items[0].Bitmap); // картинка не меняется

попробуй Visible поменять туда-сюда у маркера

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

попробуй Visible поменять туда-сюда у маркера

 

Компилятор ругается на 

Marker.Descriptor.Visible:=false;

 E2064 Left side cannot be assigned to

 

 

Оказывается есть функция SetVisible

  Marker.SetVisible(false);
  Marker.SetVisible(true);

Но все равно не помогло.

Изменено пользователем Rusland
Ссылка на комментарий
  • 0

Изначально у меня все маркеры оранжевого цвета.

Заметил вот что - если изменить битмап (меняю на голубой цвет) у одного маркера (по событию OnMarkerDoubleClick)

 

 

Marker.Descriptor.Icon.Assign(ImageListMarker.Source[0].MultiResBitmap.Items[0].Bitmap);

А затем удаляю все маркеры с карты

procedure TFormMain.ClearListPV;
var
  Marker: TMapMarker;
begin
  for Marker in FMarkers do
  begin
    Marker.Remove;
    Marker.Free;
  end;
  FMarkers.Clear;
end;

и расставляю их заново

procedure TFormMain.SetMarker(ID:integer;NAIM:String;Lat,Lon:Double);
var
  Descrip: TMapMarkerDescriptor;
  MyLocation: TMapCoordinate;
begin 
  TThread.Queue(nil, procedure
  begin
    try
        MyLocation:=TMapCoordinate.Create(Lat,Lon);
        MapView.Location:=MyLocation;
        Descrip:=TMapMarkerDescriptor.Create(MyLocation);
        Descrip.Icon:=ImageListMarker.Source[0].MultiResBitmap.Items[1].Bitmap;
        Descrip.Draggable:=True;
        Descrip.Title:=NAIM; 
        Descrip.Snippet:='['+ID.ToString+'] '+Descrip.Position.ToString;
        MyMarker:=MapView.AddMarker(Descrip); 
        FMarkers.Add(MyMarker);
    except
      LabInfo.Text:='Произошла ошибка'; 
    end;
  end);
end;

procedure TFormMain.FillListPV;
begin 
  DM.FDQuerySelect.First;
  while not DM.FDQuerySelect.Eof do
  begin
    try
        SetMarker(DM.FDQuerySelect.FieldByName('ID').AsInteger,
                  DM.FDQuerySelect.FieldByName('NAIM').AsString,
                  DM.FDQuerySelect.FieldByName('LATITUDE').AsFloat,
                  DM.FDQuerySelect.FieldByName('LONGITUDE').AsFloat);
      DM.FDQuerySelect.Next;
    finally
    end;
  end
end;

То все маркеры становятся голубыми. Это баг?

Изменено пользователем Rusland
Ссылка на комментарий
  • 0

Ну как? решилась проблема?

Я тоже озадачился этим вопросом

Цитата

procedure TForm1.MapView1MapClick(const Position: TMapCoordinate);
var
Descrip:TMapMarkerDescriptor;
begin
 Descrip := TMapMarkerDescriptor.Create(Position);

MapView1.AddMarker(Descrip);


end;

на карте нажимаю и появляется стандартный маркер

пытаюсь изменить его вид (загрузить из ImageList1). программа закрывается и все. ни какой ошибки не выдает

Цитата

procedure TForm1.MapView1MapClick(const Position: TMapCoordinate);
var
Descrip:TMapMarkerDescriptor;
begin
 Descrip := TMapMarkerDescriptor.Create(Position);
 Descrip.Icon := TBitmap.Create;

 Descrip.Icon:=ImageList1.Source.Items[0].MultiResBitmap.Bitmaps[1];
MapView1.AddMarker(Descrip);
end;

 

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

Descrip.Icon := TBitmap.Create;  - это не нужно и в ImageList что-то не то прописано.

Вот так надо:

procedure TForm1.MapView1MapClick(const Position: TMapCoordinate);
var
  Descrip:TMapMarkerDescriptor;
begin
  Descrip := TMapMarkerDescriptor.Create(Position);
  Descrip.Icon:=ImageList1.Source[0].MultiResBitmap.Items[0].Bitmap;
  MapView1.AddMarker(Descrip);
end;
Ссылка на комментарий
  • 0

кстати... картинка должны быть 32*32? или любая может быть? я к тому что на карте если маркер примет форму картинки то в зависимости от размера картинки такой же будет и размер маркера?а то при 32*32 качество ни какое.

Изменено пользователем AndroidHalfNoob
Ссылка на комментарий
  • 0
26 минут назад, AndroidHalfNoob сказал:

У меня не запустилась. Пишет Инвалид Токен 

Поэтому я и написал:

1 час назад, Rusland сказал:

В Project -> Options -> Version Info -> ApiKey нужно указать свой ключ для работы с MapView.

 

21 минуту назад, AndroidHalfNoob сказал:

кстати... картинка должны быть 32*32? или любая может быть? 

Любая, хоть 320 на 320 :)

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

:) пришел домой. запустил код

 Descrip := TMapMarkerDescriptor.Create(Position);
  Descrip.Icon:=ImageList1.Source[0].MultiResBitmap.Items[0].Bitmap;
  MapView1.AddMarker(Descrip);

и все работает. все таки на работе 8-ка глючная.

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

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

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

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

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

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

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

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

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

  • Последние посетители   0 пользователей онлайн

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