Google Maps huidige locatie

Pagina: 1
Acties:

  • champion16
  • Registratie: Maart 2010
  • Laatst online: 12:23
Goedenavond,

Ik ben sinds kort bezig een appje te maken, waarbij er google maps in is geintegreerd en waarbij je automatisch naar je huidige locatie toegaat.

Ik maak gebruik van google maps v2.

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
setUpMapIfNeeded();
}

@Override
protected void onResume() {
super.onResume();
setUpMapIfNeeded();
}


private void setUpMapIfNeeded() {
// Do a null check to confirm that we have not already instantiated the map.
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
// Check if we were successful in obtaining the map.
if (mMap != null) {
setUpMap();
}
}
}


private void setUpMap() {
mMap.setMyLocationEnabled(true);

Location myLocation = mMap.getMyLocation();
LatLng latLng = new LatLng(myLocation.getLatitude(), myLocation.getLongitude());

CameraPosition position = new CameraPosition.Builder()
.target(latLng)
.zoom(17).build();

mMap.animateCamera(CameraUpdateFactory.newCameraPosition(position));

}

De code tot en met mMp.setMyLocationEnabled(true) doet het. Je krijgt dan in de app in google maps rechtsboven een knopje en als je daarop klikt ga je inzoomen naar je huidige locatie.

Wat ik eronder heb gezet is bedoelt om automatisch in te zoomen naar de huidige locatie, maar deze werkt niet. De foutmelding die ik krijg is dat ik hier LatLng latLng = new LatLng(myLocation.getLatitude(), myLocation.getLongitude()); een NullPointerException krijg.

Terwijl hij 1 regel erboven duidelijk weet waar die moet zijn.

Hoe zou ik dit kunnen oplossen? Inmiddels ben ik al heel wat uurtjes kwijt, maar kom ik niet verder.

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 14:12

Onbekend

...

En wat is de waarde van myLocation? En van myLocation.getLatitude()?

Speel ook Balls Connect en Repeat


  • champion16
  • Registratie: Maart 2010
  • Laatst online: 12:23
Onbekend schreef op woensdag 30 september 2015 @ 21:52:
En wat is de waarde van myLocation? En van myLocation.getLatitude()?
Dit is de error die ik krijg:
java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference

Terwijl de mMap.setMyLocationEnabled(true) alleen wel de juiste locatie in google maps in de app weergeeft.
Dus klikken op het knopje rechtsboven waardoor hij inzoomed op de huidige locatie.

  • Mavamaarten
  • Registratie: September 2009
  • Nu online

Mavamaarten

Omdat het kan!

Duidelijk is myLocation dus niet geinstantieerd, dus ik zou even controleren of "mMap.getMyLocation();" wel doet wat je wil dat het doet.

PS, zet code altijd in [code]-tags. Dat maakt het een stuk leesbaarder.

Android developer & dürüm-liefhebber


  • champion16
  • Registratie: Maart 2010
  • Laatst online: 12:23
Mavamaarten schreef op woensdag 30 september 2015 @ 22:00:
Duidelijk is myLocation dus niet geinstantieerd, dus ik zou even controleren of "mMap.getMyLocation();" wel doet wat je wil dat het doet.

PS, zet code altijd in [code]-tags. Dat maakt het een stuk leesbaarder.
Sorry zal het voortaan niet vergeten.

Hoe zou ik dat kunnen controleren? Ik kan niet helder meer denken na 10 uurtjes bij dit foutje te zijn geweest.

Ik vind het wel vreemd dat hij 1 regel erboven wel de locatie weet, want je kan er naartoe inzoomen met het knopje. Maar eronder weet die het niet meer?

Acties:
  • 0 Henk 'm!

  • Mavamaarten
  • Registratie: September 2009
  • Nu online

Mavamaarten

Omdat het kan!

champion16 schreef op woensdag 30 september 2015 @ 22:07:
[...]


Sorry zal het voortaan niet vergeten.

Hoe zou ik dat kunnen controleren? Ik kan niet helder meer denken na 10 uurtjes bij dit foutje te zijn geweest.

Ik vind het wel vreemd dat hij 1 regel erboven wel de locatie weet, want je kan er naartoe inzoomen met het knopje. Maar eronder weet die het niet meer?
Volgens mij werkt het een beetje anders...
Ik heb de documentatie niet gelezen en heb geen ervaring met de Maps API, maar volgens mij zet deze regel code:
Java:
1
mMap.setMyLocationEnabled(true);
gewoon dat knopje aan. Als je daarop klikt zal Google Maps zelf even je locatie opzoeken en inzoomen op die plek (gewoon standaardfunctionaliteit van Google Maps).

Het automatisch inzoomen op de map doe je met je eigen code, en dat werkt dus nog niet.

Android developer & dürüm-liefhebber


Acties:
  • 0 Henk 'm!

  • champion16
  • Registratie: Maart 2010
  • Laatst online: 12:23
Mavamaarten schreef op donderdag 01 oktober 2015 @ 08:02:
[...]


Volgens mij werkt het een beetje anders...
Ik heb de documentatie niet gelezen en heb geen ervaring met de Maps API, maar volgens mij zet deze regel code:
Java:
1
mMap.setMyLocationEnabled(true);
gewoon dat knopje aan. Als je daarop klikt zal Google Maps zelf even je locatie opzoeken en inzoomen op die plek (gewoon standaardfunctionaliteit van Google Maps).

Het automatisch inzoomen op de map doe je met je eigen code, en dat werkt dus nog niet.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);

        SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);

        mMap = fm.getMap();

        mMap.setMyLocationEnabled(true);

        LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        Criteria criteria = new Criteria();
        String provider = locationManager.getBestProvider(criteria, true);

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    public void requestPermissions(@NonNull String[] permissions, int requestCode)
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for Activity#requestPermissions for more details.



        }
        Location location = locationManager.getLastKnownLocation(provider);

        if(location != null)
        {
            double latitude = location.getLatitude();
            double longitude = location.getLongitude();
            LatLng latLng = new LatLng(latitude, longitude);

            mMap.addMarker(new MarkerOptions().position(latLng).title("Hier"));
        }


    }


Dit heb ik nu gedaan. De marker komt er nog steeds niet wat wil zerggen dat location leeg is.
Terwijl ik wel in mijn manifest de permissions juist heb staan.

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Pagina: 1