mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-22 13:09:46 +01:00
set location picker icon over map
show location when clicked on button Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
0742afe58c
commit
965692ce7e
@ -9,6 +9,7 @@ import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.Button
|
||||
import android.widget.ImageButton
|
||||
import android.widget.Toast
|
||||
import androidx.core.content.PermissionChecker
|
||||
@ -47,9 +48,13 @@ class LocationController(args: Bundle) : BaseController(args) {
|
||||
@JvmField
|
||||
var btCenterMap: ImageButton? = null
|
||||
|
||||
@BindView(R.id.btn_select_location)
|
||||
@JvmField
|
||||
var btnSelectLocation: Button? = null
|
||||
|
||||
init {
|
||||
NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this)
|
||||
getInstance().load(context, PreferenceManager.getDefaultSharedPreferences(context));
|
||||
getInstance().load(context, PreferenceManager.getDefaultSharedPreferences(context))
|
||||
}
|
||||
|
||||
override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View {
|
||||
@ -61,24 +66,34 @@ class LocationController(args: Bundle) : BaseController(args) {
|
||||
drawMap()
|
||||
}
|
||||
|
||||
override fun onViewBound(view: View) {
|
||||
btnSelectLocation?.setOnClickListener {
|
||||
val selectedLat: Double? = map?.mapCenter?.latitude
|
||||
val selectedLon: Double? = map?.mapCenter?.longitude
|
||||
Toast.makeText(activity, "Lat: $selectedLat Lon: $selectedLon", Toast.LENGTH_LONG).show()
|
||||
}
|
||||
}
|
||||
|
||||
fun drawMap(){
|
||||
if (!isFineLocationPermissionGranted()) {
|
||||
requestFineLocationPermission();
|
||||
requestFineLocationPermission()
|
||||
}
|
||||
|
||||
map?.setTileSource(TileSourceFactory.MAPNIK);
|
||||
map?.setTileSource(TileSourceFactory.MAPNIK)
|
||||
|
||||
map?.onResume();
|
||||
map?.onResume()
|
||||
|
||||
val copyrightOverlay = CopyrightOverlay(context);
|
||||
map?.overlays?.add(copyrightOverlay);
|
||||
val copyrightOverlay = CopyrightOverlay(context)
|
||||
map?.overlays?.add(copyrightOverlay)
|
||||
|
||||
map?.setMultiTouchControls(true);
|
||||
map?.isTilesScaledToDpi = true;
|
||||
map?.setMultiTouchControls(true)
|
||||
map?.isTilesScaledToDpi = true
|
||||
|
||||
val locationOverlay = MyLocationNewOverlay(GpsMyLocationProvider(context), map);
|
||||
locationOverlay.enableFollowLocation();
|
||||
locationOverlay.enableMyLocation();
|
||||
val locationOverlay = MyLocationNewOverlay(GpsMyLocationProvider(context), map)
|
||||
locationOverlay.enableFollowLocation()
|
||||
locationOverlay.enableMyLocation()
|
||||
// locationOverlay.setPersonIcon(
|
||||
// DisplayUtils.getBitmap(ResourcesCompat.getDrawable(resources!!, R.drawable.current_location_circle, null)))
|
||||
map?.overlays?.add(locationOverlay)
|
||||
|
||||
val mapController = map?.controller
|
||||
|
@ -55,19 +55,6 @@ import android.view.Window;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.XmlRes;
|
||||
import androidx.appcompat.widget.AppCompatDrawableManager;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
import androidx.core.graphics.drawable.DrawableCompat;
|
||||
import androidx.emoji.text.EmojiCompat;
|
||||
|
||||
import com.facebook.common.executors.UiThreadImmediateExecutorService;
|
||||
import com.facebook.common.references.CloseableReference;
|
||||
import com.facebook.datasource.DataSource;
|
||||
@ -102,6 +89,19 @@ import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.XmlRes;
|
||||
import androidx.appcompat.widget.AppCompatDrawableManager;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
import androidx.core.graphics.drawable.DrawableCompat;
|
||||
import androidx.emoji.text.EmojiCompat;
|
||||
|
||||
public class DisplayUtils {
|
||||
|
||||
private static final String TAG = "DisplayUtils";
|
||||
@ -160,7 +160,7 @@ public class DisplayUtils {
|
||||
return new BitmapDrawable(getRoundedBitmapFromVectorDrawableResource(resources, resource));
|
||||
}
|
||||
|
||||
private static Bitmap getBitmap(Drawable drawable) {
|
||||
public static Bitmap getBitmap(Drawable drawable) {
|
||||
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
|
||||
drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
|
||||
Canvas canvas = new Canvas(bitmap);
|
||||
|
12
app/src/main/res/drawable/current_location_circle.xml
Normal file
12
app/src/main/res/drawable/current_location_circle.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape android:shape="oval">
|
||||
<solid android:color="#0039C9"/>
|
||||
<stroke android:color="#FFFFFF" android:width="0.1dp"/>
|
||||
<size android:width="6dp" android:height="6dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
</selector>
|
@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FF0000"
|
||||
android:pathData="M12,2C8.13,2 5,5.13 5,9c0,5.25 7,13 7,13s7,-7.75 7,-13c0,-3.87 -3.13,-7 -7,-7zM12,11.5c-1.38,0 -2.5,-1.12 -2.5,-2.5s1.12,-2.5 2.5,-2.5 2.5,1.12 2.5,2.5 -1.12,2.5 -2.5,2.5z"/>
|
||||
</vector>
|
@ -1,24 +1,72 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/parent_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" >
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<org.osmdroid.views.MapView android:id="@+id/map"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent" />
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="80dp">
|
||||
<SearchView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:queryHint="Search for places">
|
||||
</SearchView>
|
||||
|
||||
<ImageButton
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/ic_center_map"
|
||||
android:src="@drawable/ic_baseline_gps_fixed_24"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:background="#00ffffff"
|
||||
android:cropToPadding="true" />
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1">
|
||||
|
||||
<org.osmdroid.views.MapView android:id="@+id/map"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent" />
|
||||
|
||||
<ImageButton
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="80dp"
|
||||
android:id="@+id/ic_center_map"
|
||||
android:src="@drawable/ic_baseline_gps_fixed_24"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:background="#00ffffff"
|
||||
android:cropToPadding="true"
|
||||
android:contentDescription="go to current location" />
|
||||
|
||||
<View
|
||||
android:id="@+id/locationpicker_anchor"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_centerInParent="true" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="50dp"
|
||||
android:src="@drawable/ic_baseline_location_on_red_24"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginBottom="0dp"
|
||||
android:layout_above="@id/locationpicker_anchor"
|
||||
android:contentDescription="your location">
|
||||
</ImageView>
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="80dp">
|
||||
<Button
|
||||
android:id="@+id/btn_select_location"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:text="Share location">
|
||||
|
||||
</Button>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
Loading…
Reference in New Issue
Block a user