2016-08-26 9 views
1

アンドロイドアプリケーション用のDelphiでマーカーアイコンを変更する方法を教えてください。Android用Delphi 10でマーカー(TMapMarkerDescriptor)のアイコンを変更するにはどうすればよいですか?

私の試みは

s.Create(16, 16); //Image size 
position.Latitude := mapview1.Location.Latitude; 
position.Longitude := mapview1.Location.Longitude; 
MyMarker := TMapMarkerDescriptor.Create(Position, 'MyMarker'); 
MyMarker.Draggable := True; 
Mymarker.Icon := imagelist1.Bitmap(s,0); 
MyMarker.Visible :=True; 
Fmarkers.Add(MapView1.AddMarker(MyMarker)); 

イメージリストは、フォーム上TImageListのでは動作しません。 16x16イメージが追加されました。

私のアプリを実行すると、マーカーは表示されません。私はコメントをする/ /アイコンとの線は、すべて正常に動作しますが、私はカスタムマーカーのアイコンがありません。

私は4種類のマーカーアイコンが必要です。

+0

からカスタムアイコンを配置する方法を見つけました'と宣言した? – MartynA

+0

は、私のテストとこの問題についての研究によってTSizeFです。私はTImageを使ってカスタムアイコンを手に入れることができますが、イメージリストではできません。私は自分の研究を続けます – Henrikki

答えて

1

TSizeF.Createはレコードのインスタンスを返します。これは変数sに保存する必要があります。これは、(あなたのイメージリストにインデックス0の16×16ビットマップを持って想定)動作するはずです:

s := TSizeF.Create(16, 16);   //Image size 
position.Latitude := mapview1.Location.Latitude; 
position.Longitude := mapview1.Location.Longitude; 
MyMarker := TMapMarkerDescriptor.Create(Position, 'MyMarker'); 
MyMarker.Draggable := True; 
Mymarker.Icon := imagelist1.Bitmap(s, 0); 
MyMarker.Visible :=True; 
Fmarkers.Add(MapView1.AddMarker(MyMarker)); 

あなたはまた、単に別の変数に作成をスキップし、コンストラクタから直接それを使用することができるはず[未検証] - TSizeFはレコードですので、破壊する必要はありません。

MyMarker.Icon := ImageList1.Bitmap(TSizeF.Create(16, 16), 0); 
+0

これは良いヒントです。ありがとうございました。 **しかし、私の問題は解決しません。アイコンはまだマップに表示されていない**これはマップやマーカーの問題だと思う。 – Pascal

+1

イメージリストの正しい場所に16x16ビットマップがありますか?デバッガのコードをステップ実行して、 'Mymarker.Icon'がその行の実行後に割り当てられているかどうか確認しましたか?私はあなたのイメージリストやあなたのコードの残りの部分を持っていないので、私はあなたのためにそれをすることはできません。これで問題が解決しない場合は、質問を編集して詳細を追加してください。 ** **私に動揺する理由はありません**。 –

+0

私はあなたに怒っていません:) 私はTimageでテストをしました。私はこれにイメージを割り当てることができます。イメージリストは素晴らしい作品です。 マーカーアイコンの画像の特殊なフォーマットやサイズが必要ですか? – Pascal

-1

まあ、私は長い時間のために、今、同じことのための答えを探していると私はそれを変えることができる唯一の方法はに私のPNG画像をロードしましたデザイナーのTImageコンポーネントに割り当ててから、Bitmapを割り当てます。

MyMarker.Icon := Image1.Bitmap; 

また、画像のサイズが

アップデートは関係ありません:このよう
を私はあなたの変数 `sは何イメージリスト

s.Create(16, 16); //Image size 
position.Latitude := mapview1.Location.Latitude; 
position.Longitude := mapview1.Location.Longitude; 
MyMarker := TMapMarkerDescriptor.Create(Position, 'MyMarker'); 
MyMarker.Draggable := True; 
MyMarker.Icon := ImageList1.Source.Items[0].MultiResBitmap.Items[0].Bitmap; 
MyMarker.Visible :=True; 
Fmarkers.Add(MapView1.AddMarker(MyMarker)); 
関連する問題