2017-01-20 2 views
1

Ich habe eine KML-Ebene, die ich von einem Eingangsstrom bilden, wie es so:Hinzufügen von Markern zu einer Karte in Android

private KmlLayer layer; 
inputStream = new URL("urlHERE").openStream(); 
layer = new KmlLayer(mMap, inputStream, getApplicationContext()); 

Ich mag in dieser Schicht durch jede Markierung zu durchlaufen und überprüfen, ob es in einem bestimmten ist Abstand zu meinem aktuellen Standort und zeige es nur an, wenn es ist.

Dies ist der Code, den ich verwende, um den Breitengrad/Länge der Markierungen zu erhalten.

for (KmlPlacemark placemark: layer.getPlacemarks()) { 


      String s = placemark.getGeometry().getGeometryObject().toString(); 
      Log.d("placemarks",s); 
      String start = "("; 
      String end = ")"; 
      String latlngvalue = s.substring(s.indexOf(start)+1,s.lastIndexOf(end)); 
      String[] strngs = latlngvalue.split(","); 
      double placemarkerLat = Double.parseDouble(strngs[0]); 
      double placemarkerLong = Double.parseDouble(strngs[2]); 
      markerLocation.setLatitude(placemarkerLat); 
      markerLocation.setLongitude(placemarkerLong); 

Was ich tun möchte, ist es, die Informationen für jeden Marker in einer Arraylist hinzufügen, wenn sie innerhalb einer bestimmten Entfernung des Benutzers sind, und fügen Sie dann die Markierungen auf der Karte.

Antwort

0

üBERPRüFT diese Linie

currLocationMarker = mGoogleMap.addMarker (marker); // IHRE ANTWORT HIER

@Override 
public void onLocationChanged(Location location) { 

    mGoogleMap.clear(); 
    mHashMap.clear(); 

    allMarkersLists.clear(); 
    favouriteGpList.clear(); 

    //place marker at current position 
    //mGoogleMap.clear(); 
    if (currLocationMarker != null) { 
     currLocationMarker.remove(); 
    } 

    latitude = location.getLatitude(); 
    longitude = location.getLongitude(); 
    latLng = new LatLng(location.getLatitude(), location.getLongitude()); 

    markerOptions = new MarkerOptions(); 
    markerOptions.position(latLng); 
    markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)).draggable(true); 
    currLocationMarker = mGoogleMap.addMarker(markerOptions); //YOUR ANSWER HERE 

    mHashMap.put(currLocationMarker, 0); 

    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
    mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(11)); 
    mGoogleMap.setMyLocationEnabled(true); 

    getMapPin(); 

    //If you only need one location, unregister the listener 
    LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); 
} 
Verwandte Themen