Skip to content

Xamarin.Forms.Maps との比較

amay077 edited this page Jul 18, 2016 · 10 revisions

Xamarin.Forms.Maps と比較して、追加された機能等について解説します。特に記載がない限り、Android / iOS のみの対応です。

目次


追加された機能

Polyline, Polygon, Circle のサポート(v1.1.0より)

共通のインターフェースで、ポリライン・ポリゴン・円を追加できます。

Polyline, Polygon, Circle supports

例えば、ポリラインの追加は以下のように行います。

// 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);

ポリラインとポリゴンは、 IsClickabletrue に設定すると Clicked イベントを受け取ることができます。

円には、 IsClickable プロパティと Clicked イベントはありません。これは、 Android ネイティブの Google Maps API がサポートしていないためです。

詳しくは、サンプルプログラム − XFGoogleMapSampleShapesPage.xaml.cs を参考にしてください。

制限事項

  • v1.1.0 では、Pin, Polyline, Polygon, Circle の各プロパティのバインディングはサポートしていません。

Pin の選択状態をプログラムから設定/取得(v1.0.0より)

Map.SelectedPin に表示済みの Pin を設定すると、そのピンを選択状態とし、情報ウィンドウ(InfoWindow)を表示します。 Map.SelectedPinnull を設定すると、選択状態を解除し、情報ウィンドウ(InfoWindow)を閉じます。

詳しくは、サンプルプログラム − XFGoogleMapSamplePinsPage.xaml.cs を参考にしてください。

Pin の選択イベント(v1.2.0より)

ピンが選択された時に、 Map.SelectedPinChanged が発生するようになりました。

地図上のピンのタップまたは Map.SelectedPin への設定でこのイベントが発生します。 選択が解除された場合は SelectedPinChangedEventArgs.SelectedPinnull になります。

map.SelectedPinChanged += (object sender, SelectedPinChangedEventArgs e) =>
{
    labelStatus.Text = $"SelectedPin changed - {e?.SelectedPin?.Label ?? "nothing"}";
}

Pin のカスタム画像(v1.4.0より)

マーカーの画像をカスタマイズする事ができるようになりました。

Supports custom markers

プラットフォーム固有の画像リソースを、マーカー画像として使用するには、以下のようにします。

pin.Icon = BitmapDescriptorFactory.FromBundle("image01.png");

image01.png は、 Android には Assets に "Android Asset" として、 iOS には "BundleResource" として用意しておく必要があります。

他には、 Stream をマーカーとして使用する BitmapDescriptorFactory.FromStream、既定のマーカーの色を変更する BitmapDescriptorFactory.DefaultMarker があります。

詳しくは、サンプルプログラム − XFGoogleMapSampleCustomPinsPage.xaml.cs を参考にしてください。

注意事項

同じサイズの画像でも iOS の方が大きく描画されるようです。これについての意見は issue #40 で受け付けています。

カスタムタイルのサポート(v1.3.0より)

Map.TileLayersTileLayer オブジェクトを追加すると、Googleマップ以外の背景地図を表示できます。

Custom tile supports

例えば、地理院地図 の背景地図を使用するには、以下のようにします。

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 を使用します。

詳しくは、サンプルプログラム − XFGoogleMapSampleTilesPage.xaml.cs を参考にしてください。

変更された機能

Map.MoveToRegion の引数に bool animate を追加(v1.1.0より)(Android / iOS / UWP 対応)

animatetrue に設定すると、移動時にアニメーションします。 false を設定するとアニメーションせずに即座に移動します。この引数は省略可能であり、省略時は true になります。

削除された機能

  • なし(v1.1.0 現在)