android


Re-position MyLocation button inside Google Map fragment


In the Google Maps API for Android there is button located at the top-right corner, served to locate you inside the map.
I would like to know if it is possible to relocate this icon that is by default in the API of Google Maps for Android, because at the top I plan to add an EditText as if it were floating.
I can suggest 2 options.
However, I strongly advise you to use the first one - much more classic and simple:
Use Map Padding (recommended)
You can re-position any of the GoogleMap Controls by setting the Padding from the corners. In your case, I would set some padding from the top:
googleMap.setPadding(0, numTop, 0, 0); //numTop = padding of your choice
It would also change the center position of the Map Camera accordingly, which is great for that kind of use case (adding a title / other floating controls).
Disable the button and create one of your own (less recommended)
Disabling it will be easy:
googleMap.getUiSettings().setMyLocationButtonEnabled(false)
However, creating a new one would be trickier - mostly because it is harder to set a fully-functional one.
I would Create a FloatingActionButton that looks like the one on the Google Maps application (example).
You can get the Icon from here (called "My Location")
Color the Fab in Material Grey 300 (maybe 400, can't remember at the moment)
Define an onClick Event that would move the camera to the user's current location (you're going to have to use Location Service for this.
Sample:
//Acquire a reference to the system Location Manager
LocationManager locationManager =
(LocationManager)getSystemService(Context.LOCATION_SERVICE);
//Acquire the user's location
Location selfLocation = locationManager
.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
//Move the map to the user's location
LatLng selfLoc = new LatLng(selfLocation.getLatitude(), selfLocation.getLongitude());
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(selfLoc, 15);
googleMap.moveCamera(update);
If you noticed, when you click the "My Location" button, it starts to track you and move the camera accordingly. In order to create that effect, you need to override googleMap.onCameraMove and googleMap.onCameraIdle, and code your app so whenever the camera is idle, the map will continue to follow the user, and whenever the user moved the camera, it will stop.
Sample for onCameraIdle:
//Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
//Acquire the user's location
Location selfLocation = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
LatLng cameraLocation = googleMap.getCameraPosition().target;
float[] results = new float[3];
Location.distanceBetween(selfLocation.getLatitude(), selfLocation.getLongitude(), cameraLocation.latitude, cameraLocation.longitude, results);
if (results[0] < 30) //30 Meters, you can change that
googleMap.moveCamera(...) //Move the camera to user's location

Related Links

splash screen not working on Samsung galaxy android 4.1.1
Playing multiple video simultaneously in HTML video tag in WebView
NetworkOnMyThreadExcepion inside new Tread [duplicate]
android.text.format.DateFormat “EEEE” gives wrong day name
java.lang.OutOfMemoryError while downloading image using universalimageloader
Controll buffering in VideoView
Trying to implement swipe movement
Email without user intervention
Android - save strings/variables? [closed]
On click item in gridview
Remove the Unfortunately the app has stopped message in android(Not its cause, but message itself)
How do different Android app components with different lifecycles share objects?
Android setOnTouchListener not working in fragment
Sending SMS from an application in android
Manifest Merger error when using Espresso to test a project with minSdkVersion=“14”
Writing to a File in Android

Categories

HOME
twitter-bootstrap-3
telegram
nvd3.js
yahoo-finance
composite-primary-key
owl-carousel
static-site
parameters
visual-studio-emulator
hugo
gembox-spreadsheet
frontend
mod-security
radgridview
favicon
onedrive-api
libusb
coin3d
easyphp
forgot-password
google-container-registry
symfony-console
guzzle
blade
imagemap
r-mice
angular-routing
mongoid6
object-storage
android-sharedpreferences
fragment-backstack
winexe
subclass
sqsh
paragraph
utorrent
glib
wacom
linkedhashmap
gnat-gps
sendbird
yowsup
amazon-ses
plaintext
apriori
softmax
clang++
jide
chai-as-promised
java-bytecode-asm
java-6
jqchart
reshape
mach-o
monkey
pybrain
cronexpression
omxplayer
parfor
segment-io
nikeplus-api
observablecollection
udpclient
cda
hadoop-partitioning
jbase
inf
video-player
phonertc
sony-lifelog-api
viola-jones
sql-server-data-tools
avahi
matlab-deployment
mmwormhole
xml-namespaces
angular-carousel
vbe
websphere-esb
clickbank
nevron
kaleidoscope
wp7test
wimax
onmousemove
correlated-subquery
google-maps-mobile
convention
catransform3d
u2netdk
google-floodlight
nhprof
presentation-layer
squishit
ie-compatibility-mode
xpsdocument
linfu-dynamicproxy
flvplayback
mathematical-typesetting

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App