I'm making an uber clone app
this is my code and it checks if there is any drive active if so it updates the rider location
if (driverActive != false) {
LatLng userLocation = new LatLng(location.getLatitude(), location.getLongitude());
mMap.clear();
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(userLocation, 20));
mMap.addMarker(new MarkerOptions().position(userLocation).title("Your Location"));
}
android studio shows a warning driverActive != false' can be simplified to 'driverActive'and it doesnt update the rider map
but if I remove driverActive if statement it works and updates the location of the rider...
any help would be appreciated
It turned it outs just the ParseUser functions that didn't log the anonymous user and thus making it crash because when the check function gets the info it gets nothing making driverActive null while crashing my app..
Thanks anyway
Related
I need to display user inserted pins on the map that i will have in my application.
This pin needs to be visible to all the users using the app.
I have no clue how to implement this.
Can i get some help please?
Pins in Google Maps are called Markers and they are pretty simple to create.
Following what is documented from the Google Maps API here, you just use the addMarker() method to create a marker and can customize the options of where it should be placed and the title to show when it is clicked on
#Override
public void onMapReady(GoogleMap map) {
map.addMarker(new MarkerOptions()
.position(new LatLng(10, 10))
.title("Hello world"));
}
I posted the code snippet below as I'm unable to find the command setUpMapIfNeeded();. When I type the necessary command, I get red lines everywhere. Can anyone help me out with this code? Also, I'm not getting any marker in my emulator.
I'm open to suggestions, please help me out. The min sdk version that I'm using is 17, and the android studio version is 2.1. I'm using the Googlemaps activity. I still don't understand why I'm not getting the setUpMapIfNeeded command and also the rest of the inbuilt code snippet.
Code screenshot
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
/**
* Manipulates the map once available.
* This callback is triggered when the map is ready to be used.
* This is where we can add markers or lines, add listeners or move the camera. In this case,
* we just add a marker near Sydney, Australia.
* If Google Play services is not installed on the device, the user will be prompted to install
* it inside the SupportMapFragment. This method will only be triggered once the user has
* installed Google Play services and returned to the app.
*/
#Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
}
Also after trying the missing code I'm unable to get any marker.
Whereas, wherever I have search online I'm getting this tutorial.
If you are aware of any other code, do let me know.
When you use MapsActivty, there is no need for any extra code. All the neccessary code is generated by Android Studio itself. If you look at the tutorial, the code inside the setUpMapIfNeeded() is same as the code you have in your onCreate(). When you add the Google MapsActivty, all you need to show the map is the Google Maps API key. Paste the APi key in your "google_maps_api.xml"(inside values folder) and you are done. Run the application and you will get the map in your Activity.
Steps for acquiring the Google Maps API key is given in the google_maps_api.xml in comments.
Also if are adding your own markers, then use the following code
public void setMarkerOnMap(String name, LatLng l) {
// Creating a marker
MarkerOptions markerOptions = new MarkerOptions();
// Setting the position for the marker
markerOptions.position(l);
// Setting the title for the marker.
// This will be displayed on taping the marker
markerOptions.title(name);
// Placing a marker on the touched position
mMap.addMarker(markerOptions);
}
Call this function like this :
LatLng loc=new LatLng(latitude,longitude);
String str_placeName="Place Name";
setMarkerOnMap(str_placeName,loc);
You need to call setUpMapIfNeeded() in onCreate() method:
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
setUpMapIfNeeded();
}
Check this tutorial and SO question on how to add markers.
I am trying to add current location mark to my android Google map application in Android Studio.
My code:
private void setUpMap() {
Location location = null;
LatLng loc = new LatLng(location.getLatitude(), location.getLongitude());
Marker marker;
marker = mMap.addMarker(new MarkerOptions().position(new LatLng((location.getLatitude()), location.getLongitude())).title("Marker"));}
It causes my application to crash. Underneath there are mistakes that appeared while running my application:
http://postimg.org/image/qrxdo9dl5/full/
(I used postimage to upload a larger size screen-shot)
Before I modified my code, I had a working code set to position 0,0:
private void setUpMap() {
mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
Then I tried to change location '0,0' to read current latitude and longitude and show it on my Google map. I changed my code based on this post: How to get the current location in Google Maps Android API v2?
I am a java beginner and any help is much appreciated. Thank you very much for any help.
You are getting a NullPointerException because your Location object is set to null. In the linked answer the location object comes from the location callback.
public void onMyLocationChange(Location location) // location object here
You can easily get the Location from your map reference like so
Location location = mMap.getMyLocation();
However this method is deprecated and using the location API is encouraged. To get location from the API you can follow this guide:
https://developer.android.com/training/location/retrieve-current.html
You build a GoogleApiClient, connect it, and then use it to get a location.
Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
I want to display markers on google maps (android)
I used this code (like in the example in android developer):
The location, name and descripion are valid (I checked them via debug mode)
It shows me the icon on the desired location, however without the marker or the description and snippets. The following line
mMap.addMarker(MarkerOptions().position(location)
.title(poi.getName()).snippet(poi.getDescription())
.icon(BitmapDescriptorFactory.fromBitmap(image_item));
shows me only the icon without the title or snippest.
Thanks a lot
Did you follow the examples from the documentation? Also, the sample code bundled with the Google Play services SDK?
Edit: You can show an info window programmatically by calling showInfoWindow() on the target marker:
Marker marker = mMap.addMarker(new MarkerOptions()
.position(location)
.title(poi.getName())
.snippet(poi.getDescription())
.icon(BitmapDescriptorFactory.fromBitmap(image_item));
marker.showInfoWindow();
However, bear in mind that only one info window can be displayed at a time. If a user clicks on another marker, the current window will be hidden and the new info window will be displayed.
try this code.
This code is work on Google map with API V2
Add the inbuilt method of google.
public void onMapLongClick(LatLng point) {
// Getting the Latitude and Longitude of the touched location
latLng = point;
// Clears the previously touched position
myMap.clear();
// Animating to the touched position
myMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
// Creating a marker
markerOptions = new MarkerOptions();
// Setting the position for the marker
markerOptions.position(latLng);
// Adding Marker on the touched location with address
new ReverseGeocodingTask(getBaseContext()).execute(latLng);
tmpLatLng = latLng;
drawCircle(point);
btLocInfo.setEnabled(true);
}
This is not a rare problem the only way to fix it is to reinstall its the only way was able to fix it .
show icon without the title or snippest. use below code
LatLng newYork = new LatLng(40.7142, 74.0064);
Marker melbourne = map.addMarker(new MarkerOptions()
.position(newYork));
Edited:
show marker with title & Snippest & icon
map.addMarker(new MarkerOptions().position(new LatLng(lat, lon))
.title(string).snippet(string2).icon(BitmapDescriptorFactory.fromBitmap(image_item));
I am pretty new to Android Development, and I've tried to make a method in my Android Application, where you press the button and get coordinates (Longitude and Latitude). But the program stops working on the emulator when I press the button.
I am probably just doing something wrong here. Looking through the Callstack didn't help me. It was simply too cluttered with...a lot of useless information.
How do I fix this?
public void onLocateByGMapButtonClick() {
LocationManager mloc = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List<String> providers = mloc.getAllProviders();
Location loc = new Location(providers.get(0));
double loTude = loc.getLongitude();
double laTude = loc.getLatitude();
String newCoords = loTude + "," + laTude;
location.setText(newCoords);
Toast.makeText(this.getBaseContext(),"Location have been updated!",5);
}
The reason you application is crashing is probably because you are receiving a null pointer exception.
You have to understand that a GPS fix is not an immediate process, it might take time and in this time you don't have a location to work on unless you use the getLaskKnownLocation method (which maybe return null as well).
So what you need to to is or use:
Location loc = lm.getLastKnownLocation(provider);
or implement a LocationListener that will fire as soon as a new location update arrives.
Tutorial: http://www.vogella.com/articles/AndroidLocationAPI/article.html