blob: b6bc7e5d4c45e0b0e3f4e084306e5dbe7b452c75 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package io.flutter.plugins.googlemaps;
import android.app.Application;
import android.content.Context;
import androidx.lifecycle.Lifecycle;
import com.google.android.gms.maps.model.CameraPosition;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.StandardMessageCodec;
import io.flutter.plugin.platform.PlatformView;
import io.flutter.plugin.platform.PlatformViewFactory;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
public class GoogleMapFactory extends PlatformViewFactory {
private final AtomicInteger mActivityState;
private final BinaryMessenger binaryMessenger;
private final Application application;
private final int activityHashCode;
private final Lifecycle lifecycle;
private final PluginRegistry.Registrar registrar; // V1 embedding only.
GoogleMapFactory(
AtomicInteger state,
BinaryMessenger binaryMessenger,
Application application,
Lifecycle lifecycle,
PluginRegistry.Registrar registrar,
int activityHashCode) {
super(StandardMessageCodec.INSTANCE);
mActivityState = state;
this.binaryMessenger = binaryMessenger;
this.application = application;
this.activityHashCode = activityHashCode;
this.lifecycle = lifecycle;
this.registrar = registrar;
}
@SuppressWarnings("unchecked")
@Override
public PlatformView create(Context context, int id, Object args) {
Map<String, Object> params = (Map<String, Object>) args;
final GoogleMapBuilder builder = new GoogleMapBuilder();
Convert.interpretGoogleMapOptions(params.get("options"), builder);
if (params.containsKey("initialCameraPosition")) {
CameraPosition position = Convert.toCameraPosition(params.get("initialCameraPosition"));
builder.setInitialCameraPosition(position);
}
if (params.containsKey("markersToAdd")) {
builder.setInitialMarkers(params.get("markersToAdd"));
}
if (params.containsKey("polygonsToAdd")) {
builder.setInitialPolygons(params.get("polygonsToAdd"));
}
if (params.containsKey("polylinesToAdd")) {
builder.setInitialPolylines(params.get("polylinesToAdd"));
}
if (params.containsKey("circlesToAdd")) {
builder.setInitialCircles(params.get("circlesToAdd"));
}
return builder.build(
id,
context,
mActivityState,
binaryMessenger,
application,
lifecycle,
registrar,
activityHashCode);
}
}