-
Notifications
You must be signed in to change notification settings - Fork 349
Xamarin.Forms.Maps との比較
Xamarin.Forms.Maps と比較して、追加された機能等について解説します。特に記載がない限り、Android / iOS のみの対応です。
-
追加機能
-
変更機能
-
削除機能
- なし
共通のインターフェースで、ポリライン・ポリゴン・円を追加できます。
例えば、ポリラインの追加は以下のように行います。
// map as Xamarin.Forms.GoogleMaps.Map
var polyline = new Polyline();
polyline.Positions.Add(new Position(40.77d, -73.93d));
polyline.Positions.Add(new Position(40.81d, -73.91d));
polyline.Positions.Add(new Position(40.83d, -73.87d));
polyline.StrokeColor = Color.Blue;
polyline.StrokeWidth = 5f;
polyline.Tag = "POLYLINE"; // Can set any object
polyline.IsClickable = true;
polyline.Clicked += (s, e) =>
{
// handle click polyline
};
map.Polylines.Add(polyline);
ラインの削除は、以下のように行います。
map.Polylines.Remove(polyline);
ポリラインとポリゴンは、 IsClickable
を true
に設定すると Clicked
イベントを受け取ることができます。
円には、 IsClickable
プロパティと Clicked
イベントはありません。これは、 Android ネイティブの Google Maps API がサポートしていないためです。
詳しくは、サンプルプログラム − XFGoogleMapSample の ShapesPage.xaml.cs
を参考にしてください。
- v1.1.0 では、
Pin
,Polyline
,Polygon
,Circle
の各プロパティのバインディングはサポートしていません。
Map.SelectedPin
に表示済みの Pin
を設定すると、そのピンを選択状態とし、情報ウィンドウ(InfoWindow)を表示します。
Map.SelectedPin
に null
を設定すると、選択状態を解除し、情報ウィンドウ(InfoWindow)を閉じます。
詳しくは、サンプルプログラム − XFGoogleMapSample の PinsPage.xaml.cs
を参考にしてください。
ピンが選択された時に、 Map.SelectedPinChanged
が発生するようになりました。
地図上のピンのタップまたは Map.SelectedPin
への設定でこのイベントが発生します。
選択が解除された場合は SelectedPinChangedEventArgs.SelectedPin
が null
になります。
map.SelectedPinChanged += (object sender, SelectedPinChangedEventArgs e) =>
{
labelStatus.Text = $"SelectedPin changed - {e?.SelectedPin?.Label ?? "nothing"}";
}
マーカーの画像をカスタマイズする事ができるようになりました。
プラットフォーム固有の画像リソースを、マーカー画像として使用するには、以下のようにします。
pin.Icon = BitmapDescriptorFactory.FromBundle("image01.png");
image01.png
は、 Android には Assets に "Android Asset" として、 iOS には "BundleResource" として用意しておく必要があります。
他には、 Stream をマーカーとして使用する BitmapDescriptorFactory.FromStream
、既定のマーカーの色を変更する BitmapDescriptorFactory.DefaultMarker
があります。
詳しくは、サンプルプログラム − XFGoogleMapSample の CustomPinsPage.xaml.cs
を参考にしてください。
同じサイズの画像でも iOS の方が大きく描画されるようです。これについての意見は issue #40 で受け付けています。
Map.TileLayers
に TileLayer
オブジェクトを追加すると、Googleマップ以外の背景地図を表示できます。
例えば、地理院地図 の背景地図を使用するには、以下のようにします。
var tileLayer = TileLayer.FromTileUri((int x, int y, int zoom) =>
new Uri($"https://cyberjapandata.gsi.go.jp/xyz/std/{zoom}/{x}/{y}.png")
);
map.TileLayers.Add(tileLayer);
地図タイルのURLではなく、画像そのものを返したい場合は TileLayer.FromSyncImage
または TileLayer.FromAsyncImage
を使用します。
詳しくは、サンプルプログラム − XFGoogleMapSample の TilesPage.xaml.cs
を参考にしてください。
animate
を true
に設定すると、移動時にアニメーションします。 false
を設定するとアニメーションせずに即座に移動します。この引数は省略可能であり、省略時は true
になります。
- なし(v1.1.0 現在)