Skip to content
Open
2 changes: 1 addition & 1 deletion android/manifest
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# this is your module manifest and used by Titanium
# during compilation, packaging, distribution, etc.
#
version: 5.7.0
version: 6.0.0
apiversion: 4
architectures: arm64-v8a armeabi-v7a x86 x86_64
description: External version of Map module using native Google Maps library
Expand Down
70 changes: 38 additions & 32 deletions android/src/ti/map/TiUIMapView.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,11 @@
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMapOptions;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.Circle;
import com.google.android.gms.maps.model.LatLng;
Expand All @@ -46,14 +44,16 @@
import java.util.HashMap;
import org.appcelerator.kroll.KrollDict;
import org.appcelerator.kroll.KrollProxy;
import org.appcelerator.kroll.KrollProxyListener;
import org.appcelerator.kroll.common.Log;
import org.appcelerator.titanium.TiApplication;
import org.appcelerator.titanium.TiBlob;
import org.appcelerator.titanium.TiC;
import org.appcelerator.titanium.io.TiFileFactory;
import org.appcelerator.titanium.proxy.TiViewProxy;
import org.appcelerator.titanium.util.TiConvert;
import org.appcelerator.titanium.view.TiUIFragment;
import org.appcelerator.titanium.view.TiCompositeLayout;
import org.appcelerator.titanium.view.TiUIView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
Expand All @@ -62,7 +62,7 @@
import ti.map.Shape.IShape;
import ti.map.Shape.PolylineBoundary;

public class TiUIMapView extends TiUIFragment
public class TiUIMapView extends TiUIView
implements GoogleMap.OnMarkerClickListener, GoogleMap.OnMapClickListener, GoogleMap.OnMarkerDragListener,
GoogleMap.OnInfoWindowClickListener, GoogleMap.InfoWindowAdapter, GoogleMap.OnMapLongClickListener,
GoogleMap.OnMapLoadedCallback, OnMapReadyCallback, GoogleMap.OnCameraMoveStartedListener,
Expand All @@ -79,6 +79,7 @@ public class TiUIMapView extends TiUIFragment
protected LatLngBounds preLayoutUpdateBounds;
protected ArrayList<TiMarker> timarkers;
protected AnnotationProxy selectedAnnotation;
private MapView mMapView;

private ArrayList<CircleProxy> currentCircles;
private ArrayList<PolygonProxy> currentPolygons;
Expand All @@ -89,9 +90,25 @@ public class TiUIMapView extends TiUIFragment
private MarkerManager mMarkerManager;
private MarkerManager.Collection collection;

public TiUIMapView(final TiViewProxy proxy, Activity activity)
public TiUIMapView(TiViewProxy proxy)
{
super(proxy, activity);
super(proxy);
mMapView = new MapView(proxy.getActivity());
mMapView.onCreate(null);
mMapView.onResume();

mMapView.getMapAsync(this);

TiCompositeLayout container = new TiCompositeLayout(proxy.getActivity(), proxy) {
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{
return interceptTouchEvent(ev) || super.dispatchTouchEvent(ev);
}
};
container.addView(mMapView);
setNativeView(container);

timarkers = new ArrayList<TiMarker>();
currentCircles = new ArrayList<CircleProxy>();
currentPolygons = new ArrayList<PolygonProxy>();
Expand Down Expand Up @@ -122,30 +139,6 @@ private void setBackgroundTransparent(View v)
}
}

@Override
protected Fragment createFragment()
{
if (proxy == null) {
Fragment map = SupportMapFragment.newInstance();
if (map instanceof SupportMapFragment) {
((SupportMapFragment) map).getMapAsync(this);
}
return map;
} else {
boolean zOrderOnTop = TiConvert.toBoolean(proxy.getProperty(MapModule.PROPERTY_ZORDER_ON_TOP), false);
GoogleMapOptions gOptions = new GoogleMapOptions();
gOptions.zOrderOnTop(zOrderOnTop);
if (this.liteMode) {
gOptions.liteMode(true);
}
Fragment map = SupportMapFragment.newInstance(gOptions);
if (map instanceof SupportMapFragment) {
((SupportMapFragment) map).getMapAsync(this);
}
return map;
}
}

protected void processPreloadRoutes()
{
ArrayList<RouteProxy> routes = ((ViewProxy) proxy).getPreloadRoutes();
Expand Down Expand Up @@ -1374,7 +1367,6 @@ public void onCameraIdle()

// Intercept the touch event to find out the correct clicksource if clicking
// on the info window.
@Override
protected boolean interceptTouchEvent(MotionEvent ev)
{
if (ev.getAction() == MotionEvent.ACTION_UP && selectedAnnotation != null) {
Expand Down Expand Up @@ -1447,4 +1439,18 @@ public boolean onClusterItemClick(TiMarker tiMarker)
{
return onMarkerClick(tiMarker.getMarker());
}

public void onResume()
{
if (mMapView != null) {
mMapView.onResume();
}
}

public void onDestroy()
{
if (mMapView != null) {
mMapView.onDestroy();
}
}
}
25 changes: 22 additions & 3 deletions android/src/ti/map/ViewProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@
package ti.map;

import android.app.Activity;
import android.os.Bundle;
import android.os.Message;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.TileOverlay;
import com.google.android.gms.maps.model.TileOverlayOptions;
import com.google.maps.android.heatmaps.HeatmapTileProvider;
import java.util.ArrayList;
Expand Down Expand Up @@ -110,7 +109,7 @@ public ViewProxy()
@Override
public TiUIView createView(Activity activity)
{
return new TiUIMapView(this, activity);
return new TiUIMapView(this);
}

public void clearPreloadObjects()
Expand All @@ -122,6 +121,26 @@ public void clearPreloadObjects()
preloadTileOverlayOptionsList.clear();
}

@Override
public void onCreate(Activity activity, Bundle savedInstanceState)
{
super.onCreate(activity, savedInstanceState);
TiUIView view = peekView();
if (view instanceof TiUIMapView) {
((TiUIMapView) view).onResume();
}
}

@Override
public void onDestroy(Activity activity)
{
super.onDestroy(activity);
TiUIView view = peekView();
if (view instanceof TiUIMapView) {
((TiUIMapView) view).onDestroy();
}
}

@Override
public boolean handleMessage(Message msg)
{
Expand Down
Loading