diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerActivity.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerActivity.java | 83 |
1 files changed, 48 insertions, 35 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerActivity.java index 27615da5dd..1a980cd571 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerActivity.java @@ -1,29 +1,34 @@ package com.mapbox.mapboxsdk.testapp.activity.annotation; +import android.content.Context; import android.os.Bundle; -import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; +import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; -import com.mapbox.mapboxsdk.annotations.Marker; -import com.mapbox.mapboxsdk.annotations.MarkerOptions; -import com.mapbox.mapboxsdk.annotations.MarkerView; +import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; -import com.mapbox.mapboxsdk.testapp.view.CustomMarkerView; +import com.mapbox.mapboxsdk.testapp.model.annotations.CountryMarker; +import com.mapbox.mapboxsdk.testapp.model.annotations.CountryMarkerOptions; + +import java.util.ArrayList; +import java.util.List; public class ViewMarkerActivity extends AppCompatActivity implements OnMapReadyCallback { private MapView mMapView; - private Marker brazil, germany, china, us; @Override protected void onCreate(Bundle savedInstanceState) { @@ -46,37 +51,46 @@ public class ViewMarkerActivity extends AppCompatActivity implements OnMapReadyC @Override public void onMapReady(MapboxMap mapboxMap) { + List<BaseMarkerOptions> countries = new ArrayList<>(); + countries.add(new CountryMarkerOptions().abbrevName("ch").flagRes(R.drawable.ic_china).position(new LatLng(31.230416, 121.473701))); + countries.add(new CountryMarkerOptions().abbrevName("us").flagRes(R.drawable.ic_us).position(new LatLng(38.907192, -77.036871))); + countries.add(new CountryMarkerOptions().abbrevName("br").flagRes(R.drawable.ic_brazil).position(new LatLng(-15.798200, -47.922363))); + countries.add(new CountryMarkerOptions().abbrevName("de").flagRes(R.drawable.ic_germany).position(new LatLng(52.520007, 13.404954))); + mapboxMap.addMarkers(countries); + + mapboxMap.setMarkerViewAdapter(new CountryAdapter(this)); + } - // adapt GL-marker to View-marker - mapboxMap.setMarkerViewAdapter(new MapboxMap.MarkerViewAdapter() { - @Nullable - @Override - public MarkerView getView(@NonNull Marker marker) { - if (marker.equals(brazil)) { - return createMarkerView("br", R.drawable.ic_brazil); - } else if (marker.equals(germany)) { - return createMarkerView("de", R.drawable.ic_germany); - } else if (marker.equals(china)) { - return createMarkerView("ch", R.drawable.ic_china); - } else if (marker.equals(us)) { - return createMarkerView("us", R.drawable.ic_us); - } - return null; - } - }); + private static class CountryAdapter implements MapboxMap.MarkerViewAdapter<CountryMarker> { - // add markers - china = mapboxMap.addMarker(new MarkerOptions().position(new LatLng(31.230416, 121.473701))); - brazil = mapboxMap.addMarker(new MarkerOptions().position(new LatLng(-15.798200, -47.922363))); - us = mapboxMap.addMarker(new MarkerOptions().position(new LatLng(38.907192, -77.036871))); - germany = mapboxMap.addMarker(new MarkerOptions().position(new LatLng(52.520007, 13.404954))); - } + private LayoutInflater inflater; + + public CountryAdapter(@NonNull Context context) { + this.inflater = LayoutInflater.from(context); + } - private MarkerView createMarkerView(String countryAbbrev, @DrawableRes int countryIconRes) { - CustomMarkerView customMarkerView = new CustomMarkerView(this); - customMarkerView.setText(countryAbbrev); - customMarkerView.setImage(countryIconRes); - return customMarkerView; + @Nullable + @Override + public View getView(@NonNull CountryMarker marker, @Nullable View convertView, @NonNull ViewGroup parent) { + ViewHolder viewHolder; + if (convertView == null) { + viewHolder = new ViewHolder(); + convertView = inflater.inflate(R.layout.view_custom_marker, parent, false); + viewHolder.flag = (ImageView) convertView.findViewById(R.id.imageView); + viewHolder.abbrev = (TextView) convertView.findViewById(R.id.textView); + convertView.setTag(viewHolder); + } else { + viewHolder = (ViewHolder) convertView.getTag(); + } + viewHolder.flag.setImageResource(marker.getFlagRes()); + viewHolder.abbrev.setText(marker.getAbbrevName()); + return convertView; + } + + private static class ViewHolder { + ImageView flag; + TextView abbrev; + } } @Override @@ -119,5 +133,4 @@ public class ViewMarkerActivity extends AppCompatActivity implements OnMapReadyC super.onLowMemory(); mMapView.onLowMemory(); } - }
\ No newline at end of file |