2017-09-01 1 views

Antwort

0
public class YOURACTIVITY extends AppCompatActivity implements OnMapReadyCallback 

private GoogleMap mMap; 
<-- 
OnCreate 
SupportMapFragment map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)); 
     map.getMapAsync(this); 

--> 

    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 
     double mLat = LATITUDE; 
     double mLon = LONTITUDE; 
     LatLng mylocation = new LatLng(mLat, mLon); 
     mMap.addMarker(new MarkerOptions().position(mylocation).snippet("TEXT BELLOW TITLE").title("TITLE")).showInfoWindow(); 
     mMap.setMyLocationEnabled(true); 
     mMap.getUiSettings().setMyLocationButtonEnabled(true); 
     mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mylocation,15)); 
    } 

UPDATE versuchen zu tun, so etwas wie dieses hinzuzufügen. Erstellen von benutzerdefinierten Layout und fügen Sie Informationen

mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { 
      @Override 
      public View getInfoWindow(Marker marker) { 
       return null; 
      } 

      @Override 
      public View getInfoContents(Marker marker) { 
       View view = MainActivity.getLayoutInflater().inflate(R.layout.map_custom, null); 


       TextView titleTextView = (TextView) view.findViewById(R.id.map_title); 
       TextView snippetTextView = (TextView) view.findViewById(R.id.map_snippet); 

       titleTextView.setText(marker.getTitle()); 
       snippetTextView.setText(marker.getSnippet()); 

       return view; 
      } 
     }); 
+0

Ich habe die Antwort aktualisiert, versuche ein benutzerdefiniertes Layout zu erstellen, wenn es für dich funktioniert – MKovac

+0

Entschuldigung, was ist getLayoutInflater? –

+0

Es ist eine Methode von Android-Aktivität. Sie können jedoch mit LayoutInflater.from (Kontext) von außerhalb einer Aktivität einen Inflator haben, wenn Sie dies benötigen. – jeprubio

1

Versuchen Sie, diese effiziente Lösung:

public void onMapLongClick(LatLng point) { 
    pin.setText("New marker [email protected]" + point.toString());   
    //Create a marker object 
    Marker myMarker = map.addMarker(new MarkerOptions().position(point).title(point.toString())); 

    //And now you can use it's values 
    myMarker.getPosition().latitude; 
    myMarker.getPosition().longitude; 
} 
+0

Sorry, ich habe vergessen, Bilder zum Beispiel zu posten. Ich füge ein neues Foto auf dem Beitrag hinzu. Überprüfen Sie bitte das. Vielen Dank. –

+0

Sie scheinen einen neuen Marker über der Karte jedes Mal, wenn es angetippt ist – jeprubio

0

Sie können die setOnMarkerDragListener Methode verwenden:

mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() { 
    @Override 
    public void onMarkerDragStart(Marker marker) { 

    } 

    @Override 
    public void onMarkerDrag(Marker marker) { 

    } 

    @Override 
    public void onMarkerDragEnd(Marker marker) { 
     double latitude = marker.getPosition().latitude; 
     double longitude = marker.getPosition().longitude; 
    } 
}); 
+0

Sorry, ich habe vergessen, Bilder zum Beispiel zu posten. Ich füge ein neues Foto auf dem Beitrag hinzu. Überprüfen Sie bitte das. Vielen Dank. –

+0

Sie können entweder die Markierung aktualisieren und ein Info-Fenster mit 'marker.showInfoWindow();' oder, als das von Ihnen bereitgestellte Bild ein anderes Layout über die Karte platziert und dessen Inhalt in der onMarkerDragEnd-Methode aktualisiert (die Karte und dieses Layout in ein FrameLayout platzieren, so dass dieses Layout die Karte überlappen kann) und dieses "Fenster" immer an der gleichen Ort und aktualisieren Sie deren Inhalt und Sichtbarkeit. Außerdem kann die Verwendung von BottomSheetDialogFragment eine gute Option sein, um die Informationen abhängig vom gewünschten Effekt anzuzeigen. – jeprubio

+0

In Ihrem Fall würde ich nicht das InfoWindow (goo.gl/H559at) verwenden und stattdessen für das FrameLayout mit der Karte und der anderen ViewGroup (RelativeLayout, LinearLayout ...) gehen und seinen Inhalt und seine Sichtbarkeit auf dem onMarkerDragEnd aktualisieren, wie es scheint dass Sie diese Information immer an der gleichen Stelle platzieren möchten. – jeprubio

0

Die kurze davon ist die Marker.getPosition() Methode zu verwenden, vielleicht in einem Toast:

@Override 
public void onMarkerDragEnd(Marker marker) { 
    LatLng pos = marker.getPosition(); 
    Toast.makeText(MainActivity.this, "Point coordinates: " + pos.latitude 
     + ", " + pos.longitude, Toast.LENGTH_LONG).show(); 
} 
+0

Tut mir leid, nicht Toast. Der Text wird mit Pin kommen. –

+0

Nun, es war ein Beispiel; Natürlich musst du dein eigenes Widget erstellen, wenn du möchtest, dass es ähnlich aussieht wie du es auf deinem Bild siehst – oldMammuth

Verwandte Themen