private Boolean updateMarkers(ReadableArray markerArray) { try { // First clear all markers from the map for (Marker marker : mapMarkers) { marker.remove(); } mapMarkers.clear(); markerLookup.clear(); // All markers to map for (int i = 0; i < markerArray.size(); i++) { ReadableMap markerJson = markerArray.getMap(i); if (markerJson.hasKey("coordinates")) { Marker marker = map.addMarker(createMarker(markerJson)); if (markerJson.hasKey("id")) { // As we have to lookup it either way, switch it around markerLookup.put(marker.getId(), markerJson.getString("id")); markerLookup.put(markerJson.getString("id"), marker.getId().replace("m", "")); } mapMarkers.add(marker); } else break; } return true; } catch (Exception e) { e.printStackTrace(); return false; } }
public void addMarker(ReadableMap config) { MarkerOptions options = createMarker(config); Marker marker = map.addMarker(options); mapMarkers.add(marker); if (config.hasKey("id")) { // As we have to lookup it either way, switch it around markerLookup.put(marker.getId(), config.getString("id")); markerLookup.put(config.getString("id"), marker.getId().replace("m", "")); } }
@Test public void testAll() throws Exception { Token token = new Token("id-token-value", "access-token-value", "type-value", "refresh-token-value"); TokenBridge tokenBridge = new TokenBridge(token); ReadableMap map = tokenBridge.toMap(); assertThat(map.getString("idToken"), is(equalTo("id-token-value"))); assertThat(map.getString("accessToken"), is(equalTo("access-token-value"))); assertThat(map.getString("type"), is(equalTo("type-value"))); assertThat(map.getString("refreshToken"), is(equalTo("refresh-token-value"))); }
private MarkerOptions createMarker(ReadableMap markerJson) { MarkerOptions options = new MarkerOptions(); options.position( new LatLng( markerJson.getMap("coordinates").getDouble("lat"), markerJson.getMap("coordinates").getDouble("lng"))); if (markerJson.hasKey("title")) { options.title(markerJson.getString("title")); } if (markerJson.hasKey("color")) { options.icon(BitmapDescriptorFactory.defaultMarker((float) markerJson.getDouble("color"))); } if (markerJson.hasKey("snippet")) { options.snippet(markerJson.getString("snippet")); } if (markerJson.hasKey("icon")) { String varName = ""; ReadableType iconType = markerJson.getType("icon"); if (iconType.compareTo(ReadableType.Map) >= 0) { ReadableMap icon = markerJson.getMap("icon"); try { int resId = getResourceDrawableId(icon.getString("uri")); Bitmap image = BitmapFactory.decodeResource(reactContext.getResources(), resId); options.icon( BitmapDescriptorFactory.fromBitmap( Bitmap.createScaledBitmap( image, icon.getInt("width"), icon.getInt("height"), true))); } catch (Exception e) { varName = icon.getString("uri"); } } else if (iconType.compareTo(ReadableType.String) >= 0) { varName = markerJson.getString("icon"); } if (!varName.equals("")) { // Changing marker icon to use resource int resourceValue = getResourceDrawableId(varName); Log.i(REACT_CLASS, varName + markerJson.toString()); options.icon(BitmapDescriptorFactory.fromResource(resourceValue)); } } if (markerJson.hasKey("anchor")) { ReadableArray anchor = markerJson.getArray("anchor"); options.anchor((float) anchor.getDouble(0), (float) anchor.getDouble(1)); } return options; }
public void setImage(ReadableMap image) { String name = image.getString("uri"); name = name.toLowerCase().replace("-", "_"); iconResourceId = context.getResources().getIdentifier(name, "drawable", context.getPackageName()); update(); }
/** * Converts a react native readable map into a JSON object. * * @param readableMap * @return */ @Nullable private JSONObject readableMapToJson(ReadableMap readableMap) { JSONObject jsonObject = new JSONObject(); if (readableMap == null) { return null; } ReadableMapKeySetIterator iterator = readableMap.keySetIterator(); if (!iterator.hasNextKey()) { return null; } while (iterator.hasNextKey()) { String key = iterator.nextKey(); ReadableType readableType = readableMap.getType(key); try { switch (readableType) { case Null: jsonObject.put(key, null); break; case Boolean: jsonObject.put(key, readableMap.getBoolean(key)); break; case Number: // Can be int or double. jsonObject.put(key, readableMap.getDouble(key)); break; case String: jsonObject.put(key, readableMap.getString(key)); break; case Map: jsonObject.put(key, this.readableMapToJson(readableMap.getMap(key))); break; case Array: jsonObject.put(key, readableMap.getArray(key)); default: // Do nothing and fail silently } } catch (JSONException ex) { // Do nothing and fail silently } } return jsonObject; }
@ReactMethod public void showImagePicker(final ReadableMap options, final Callback callback) { List<String> mTitles = new ArrayList<String>(); List<String> mActions = new ArrayList<String>(); String cancelButtonTitle = "Cancel"; if (options.hasKey("takePhotoButtonTitle") && !options.getString("takePhotoButtonTitle").isEmpty()) { mTitles.add(options.getString("takePhotoButtonTitle")); mActions.add("photo"); } if (options.hasKey("chooseFromLibraryButtonTitle") && !options.getString("chooseFromLibraryButtonTitle").isEmpty()) { mTitles.add(options.getString("chooseFromLibraryButtonTitle")); mActions.add("library"); } if (options.hasKey("cancelButtonTitle") && !options.getString("cancelButtonTitle").isEmpty()) { cancelButtonTitle = options.getString("cancelButtonTitle"); } mTitles.add(cancelButtonTitle); mActions.add("cancel"); String[] option = new String[mTitles.size()]; option = mTitles.toArray(option); String[] action = new String[mActions.size()]; action = mActions.toArray(action); final String[] act = action; ArrayAdapter<String> adapter = new ArrayAdapter<String>(mMainActivity, android.R.layout.select_dialog_item, option); AlertDialog.Builder builder = new AlertDialog.Builder(mMainActivity); if (options.hasKey("title") && !options.getString("title").isEmpty()) { builder.setTitle(options.getString("title")); } builder.setAdapter( adapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int index) { if (act[index].equals("photo")) { launchCamera(options, callback); } else if (act[index].equals("library")) { launchImageLibrary(options, callback); } else { callback.invoke(true, Arguments.createMap()); } } }); final AlertDialog dialog = builder.create(); /** * override onCancel method to callback cancel in case of a touch outside of the dialog or the * BACK key pressed */ dialog.setOnCancelListener( new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { dialog.dismiss(); callback.invoke(true, Arguments.createMap()); } }); dialog.show(); }