Skip to content

Commit

Permalink
remote images
Browse files Browse the repository at this point in the history
  • Loading branch information
m1ga committed Feb 1, 2025
1 parent a478b1d commit b68a7e6
Showing 1 changed file with 39 additions and 12 deletions.
51 changes: 39 additions & 12 deletions android/src/ti/map/ImageOverlayProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,24 @@

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import com.google.android.gms.maps.model.BitmapDescriptor;
import android.os.AsyncTask;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.GroundOverlay;
import com.google.android.gms.maps.model.GroundOverlayOptions;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import java.io.IOException;
import java.net.URL;
import org.appcelerator.kroll.KrollDict;
import org.appcelerator.kroll.KrollProxy;
import org.appcelerator.kroll.annotations.Kroll;
import org.appcelerator.kroll.common.Log;
import org.appcelerator.kroll.common.TiMessenger;
import org.appcelerator.titanium.view.TiDrawableReference;

@Kroll.proxy(creatableInModule = MapModule.class)
public class ImageOverlayProxy extends KrollProxy
{

private static final String TAG = "ImageOverlayProxy";

private static final String PROPERTY_BOUNDS_COORDINATE = "boundsCoordinate";
private static final String PROPERTY_IMAGE = "image";
private static final String PROPERTY_TOP_LEFT = "topLeft";
Expand All @@ -55,10 +52,7 @@ public void handleCreationDict(KrollDict dict)
@Kroll.setProperty
public void setImage(Object image)
{
TiDrawableReference source = TiDrawableReference.fromObject(this, image);
if (!source.isTypeNull()) {
groundOverlay.setImage(BitmapDescriptorFactory.fromBitmap(source.getBitmap()));
}
handleImage(image);
}

public GroundOverlay getGroundOverlay()
Expand Down Expand Up @@ -87,10 +81,28 @@ private void handleBoundsCoordinate(KrollDict boundsCoordinateDict)

private void handleImage(Object image)
{
TiDrawableReference source = TiDrawableReference.fromObject(this, image);
if (!source.isTypeNull()) {
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(source.getBitmap());
groundOverlayOptions.image(bitmapDescriptor);
if (image.toString().contains("https://") || image.toString().contains("http://")) {
// remote image
try {
Bitmap bmp = new DownloadImage().execute(image.toString()).get();
if (groundOverlay != null) {
groundOverlay.setImage(BitmapDescriptorFactory.fromBitmap(bmp));
} else {
groundOverlayOptions.image(BitmapDescriptorFactory.fromBitmap(bmp));
}
} catch (Exception ex) {
Log.e(TAG, "Error: " + ex.toString());
}
} else {
// local image
TiDrawableReference source = TiDrawableReference.fromObject(this, image);
if (!source.isTypeNull()) {
if (groundOverlay != null) {
groundOverlay.setImage(BitmapDescriptorFactory.fromBitmap(source.getBitmap()));
} else {
groundOverlayOptions.image(BitmapDescriptorFactory.fromBitmap(source.getBitmap()));
}
}
}
}

Expand All @@ -104,4 +116,19 @@ public String getApiName()
{
return "Ti.Map.ImageOverlay";
}

class DownloadImage extends AsyncTask<String, Void, Bitmap>
{
protected Bitmap doInBackground(String... urls)
{
try {
URL url = new URL(urls[0]);
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
return bmp;
} catch (Exception ex) {
Log.e(TAG, "Download error: " + ex.toString());
return null;
}
}
}
}

0 comments on commit b68a7e6

Please sign in to comment.