Rusland Опубликовано 19 октября, 2015 Поделиться Опубликовано 19 октября, 2015 Делаю так procedure TFormMain.MapViewMarkerDoubleClick(Marker: TMapMarker); begin Marker.Descriptor.Icon.Assign(ImageListMarker.Source[0].MultiResBitmap.Items[0].Bitmap); end; ничего не происходит. Как изменить картинку маркеру при двойном клике? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 20 октября, 2015 Модераторы Поделиться Опубликовано 20 октября, 2015 Делаю так procedure TFormMain.MapViewMarkerDoubleClick(Marker: TMapMarker); begin Marker.Descriptor.Icon.Assign(ImageListMarker.Source[0].MultiResBitmap.Items[0].Bitmap); end; ничего не происходит. Как изменить картинку маркеру при двойном клике? создать нужно изначально Marker.Descriptor.Icon := TBitmap.Create; zairkz 1 Цитата Ссылка на комментарий
0 Rusland Опубликовано 21 октября, 2015 Автор Поделиться Опубликовано 21 октября, 2015 (изменено) создать нужно изначально 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); // картинка не меняется Изменено 21 октября, 2015 пользователем Rusland Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 21 октября, 2015 Модераторы Поделиться Опубликовано 21 октября, 2015 создать нужно изначально 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 Rusland Опубликовано 21 октября, 2015 Автор Поделиться Опубликовано 21 октября, 2015 (изменено) попробуй Visible поменять туда-сюда у маркера Компилятор ругается на Marker.Descriptor.Visible:=false; E2064 Left side cannot be assigned to Оказывается есть функция SetVisible Marker.SetVisible(false); Marker.SetVisible(true); Но все равно не помогло. Изменено 21 октября, 2015 пользователем Rusland Цитата Ссылка на комментарий
0 Rusland Опубликовано 21 октября, 2015 Автор Поделиться Опубликовано 21 октября, 2015 (изменено) Изначально у меня все маркеры оранжевого цвета. Заметил вот что - если изменить битмап (меняю на голубой цвет) у одного маркера (по событию 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; То все маркеры становятся голубыми. Это баг? Изменено 21 октября, 2015 пользователем Rusland Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 24 марта, 2016 Поделиться Опубликовано 24 марта, 2016 Ну как? решилась проблема? Я тоже озадачился этим вопросом Цитата 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 Rusland Опубликовано 24 марта, 2016 Автор Поделиться Опубликовано 24 марта, 2016 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 AndroidHalfNoob Опубликовано 24 марта, 2016 Поделиться Опубликовано 24 марта, 2016 При таком коде приложение просто закрывается. видимо точно в ImageList что-то не хватает. Добавил одну картинку. больше ни чего там нет. Цитата Ссылка на комментарий
0 Rusland Опубликовано 24 марта, 2016 Автор Поделиться Опубликовано 24 марта, 2016 Вот собрал проект на основе стандартного демо - все работает. В Project -> Options -> Version Info -> ApiKey нужно указать свой ключ для работы с MapView. Maps.zip Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 24 марта, 2016 Поделиться Опубликовано 24 марта, 2016 У меня не запустилась. Пишет Инвалид Токен что то там ему с манифестом не нравится. ты наверное в 10 Делфи делал проект? а я на 8 пытаюсь запустить. Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 24 марта, 2016 Поделиться Опубликовано 24 марта, 2016 (изменено) кстати... картинка должны быть 32*32? или любая может быть? я к тому что на карте если маркер примет форму картинки то в зависимости от размера картинки такой же будет и размер маркера?а то при 32*32 качество ни какое. Изменено 24 марта, 2016 пользователем AndroidHalfNoob Цитата Ссылка на комментарий
0 Rusland Опубликовано 24 марта, 2016 Автор Поделиться Опубликовано 24 марта, 2016 26 минут назад, AndroidHalfNoob сказал: У меня не запустилась. Пишет Инвалид Токен Поэтому я и написал: 1 час назад, Rusland сказал: В Project -> Options -> Version Info -> ApiKey нужно указать свой ключ для работы с MapView. 21 минуту назад, AndroidHalfNoob сказал: кстати... картинка должны быть 32*32? или любая может быть? Любая, хоть 320 на 320 Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 24 марта, 2016 Поделиться Опубликовано 24 марта, 2016 естественно я вписал свой ApiKey в проект. Цитата Ссылка на комментарий
0 Rusland Опубликовано 24 марта, 2016 Автор Поделиться Опубликовано 24 марта, 2016 Сомневаюсь что манифесты сильно различаются в XE и 10 версиях Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 24 марта, 2016 Поделиться Опубликовано 24 марта, 2016 пришел домой. запустил код Descrip := TMapMarkerDescriptor.Create(Position); Descrip.Icon:=ImageList1.Source[0].MultiResBitmap.Items[0].Bitmap; MapView1.AddMarker(Descrip); и все работает. все таки на работе 8-ка глючная. Rusland 1 Цитата Ссылка на комментарий
Вопрос
Rusland
Делаю так
ничего не происходит.
Как изменить картинку маркеру при двойном клике?
Ссылка на комментарий
15 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.