GoogleMap: Markerstandort nach LongClick

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • GoogleMap: Markerstandort nach LongClick

    Guten Tag

    In GoogleMap kann man Marker (auf dem Kopf stehende "Wassertropfen") nach einem LongClick per Drag&Drop verschieben (siehe z.B. das kurze Demovideo zuunterst auf dieser Website). Wenn ich auf den Marker lange tippe, springt das Icon des Markers nach einer Sekunde ca. 4mm nach oben, damit man den HotPoint des Markers (Spitze des Wassertropfens) sieht. Ich habe wohl dickere Finger als die Android-Entwickler, für mich wäre ein doppelt so weiter Sprung von 8mm optimal. Trotz 3h Recherche im Internet habe ich keine Antwort gefunden, ob und wie man die Sprungdistanz verstellen könnte. Weiss jemand eine Lösung?

    Danke schon jetzt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Desperate ()

  • Klar wird der Punkt unter deinem Finger gesetzt. Ist ja der Punkt wo du auch hinzeigst.


    Zoome vorher richtig ein damit du den Marker auch an die stelle setzen kannst an die du ihn haben willst.Das ist bei allen Geräten so.


    Es kommt immer darauf an wo bei einen Klick, ich sage mal den meisten druck oder die größte Auflageflache auf dem Bildschirm entsteht.


    Vielleicht ist auch dein Bildschirm nicht richtig oder gut kalibrierte.

    Benutze mal so einen Stift mit so einen Gummi zum bedienen deines Handys.

    Stylus Pen



    Auch im Emulator wird der Punkt ein kleines Stück über der Maus markiert denndie Maus soll deinen Finger nach bilden. Das ist normal und sicher auch so gewollt.
    Ein Feedback auf Tipps ist auch schön. :P
  • jogimuc schrieb:

    Klar wird der Punkt unter deinem Finger gesetzt. Ist ja der Punkt wo du auch hinzeigst.
    Sorry, da muss ich gegensprechen, dem ist nicht so. Wenn du dir das 40-Sekunden-Video im Posting #1 anschaust, siehst du ganz klar, dass der Finger beim Verschieben nicht der HotSpot ist (beim Erzeugen des Markers schon). Im Video springt das Icon beim Verschieben auch genügend hoch, so dass sich Finger und Icon nicht in die Quere kommen. Bei meinem Galaxy S9 sind es allerdings nur 4 mm (vielleicht sind es eine konstante Anzahl Pixels, und bei meiner hohen Auflösung deshalb nur 4mm). Drum immer noch die Frage: Kann man diese Sprunglänge ändern - falls ja, wie?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Desperate ()

  • Hallo schön für die Info.
    Ich sagte aber auch schon das dies wohl so gewollt ist.

    Mal was anderes wenn ich in gmaps bin und dort einen marker setze kann ich den nicht so wie in den Video verschieben. Der marker bleibt wo er ist aber die Karte verschiebt sich. Ein verschieben des merkers mit gedruckten Finger ist bei mir nicht möglich. Eine neue Position ja aber ein verschieben nicht.

    Oder hast du und der im Video eine eigene App gemacht? Habe mir den Beitrag dies bezüglich nicht so genau angesehen.
    Ein Feedback auf Tipps ist auch schön. :P
  • Hallo jogimuc

    Habe nicht mehr mit einem Beitrag gerechnet und erst jetzt zufällig deine Frage entdeckt (leider wird man nicht - wie bei anderen Foren - mit einem Mail informiert, wenn ein neuer Beitrag eintrifft. Oder hab ich da eine Einstellung übersehen?). Nun, du musst den Marker nur draggable machen (Zeile 6):

    Erzeugen eines Markers an der Stelle, wo man mit dem Finger auf die Karte tippt

    Quellcode

    1. mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
    2. @Override public void onMapClick(LatLng latLng) {
    3. marker = map.addMarker(new MarkerOptions()
    4. .title("Testmarker")
    5. .position(latLng)
    6. .draggable(true)
    7. );
    8. }
    9. };
    Dann lässt sich der Marker verschieben und springt beim lange Antippen nach oben. Um dann damit etwas Sinnvolles zu machen, verwendest du die folgenden Methoden, vor allem wohl die letzte:

    Quellcode

    1. mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
    2. @Override public void onMarkerDragStart(Marker marker) {
    3. //TODO
    4. }
    5. @Override public void onMarkerDrag(Marker marker) {
    6. //TODO
    7. }
    8. @Override public void onMarkerDragEnd(Marker marker) {
    9. //TODO
    10. }
    11. });
    Alles anzeigen
    Solltest du das austesten, würde mich echt interessieren, wie gross bei dir beim Bewegen der Abstand zwischen deinem oberen Fingerrand (Fingernagel) und der Spitze des Markers ist (und welches Smartphone du dazu benutzt). Im Video ist bei unbekanntem Handy der Abstand etwa 2mm, bei meinem Galaxy S9 ist der Abstand aber wie schon geschrieben cirka -1mm (d.h. den untersten entscheidenden Millimeter des Icons seh ich nicht), und beim Fragesteller aus Posting #6 ist der Abstand offensichtlich auch negativ. Hängt natürlich auch von der Dicke der eigenen Finger ab, aber ich behaupte jetzt mal, dass ich eher normale bis schlanke Hände habe.

    Hoffe, das hilft.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Desperate ()

  • ... und mein eingangs gestelltes Problem ist doch lösbar! Habe einen Workaround gefunden, der zumindest bei mir perfekt läuft. Für all diejenigen, die auf das gleiche Problem gestossen sind:

    Quellcode

    1. mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
    2. @Override public void onMarkerDragStart(Marker marker) {
    3. // Setze den HotSpot des Icons mit dem zweiten Parameter 40% der Iconhöhe UNTERHALB des Icons:
    4. marker.setAnchor(0.5f, 1.4f);
    5. VisibleRegion vR = mMap.getProjection().getVisibleRegion();
    6. View v = findViewById(R.id.map);
    7. offset = 80*(vR.latLngBounds.northeast.latitude - vR.latLngBounds.southwest.latitude)/v.getLayoutParams().height;
    8. // Ersetze nun bis Zeile 14 alle 'marker.getPosition()' durch
    9. // 'new LatLng(marker.getPosition().latitude + offset, marker.getPosition().longitude)'.
    10. // Hier folgt allfälliger eigener Code
    11. }
    12. @Override public void onMarkerDrag(Marker marker) {
    13. // Eigener Code
    14. }
    15. @Override public void onMarkerDragEnd(Marker marker) {
    16. // Eigener Code
    17. }
    18. });
    Alles anzeigen

    Die Konstante 80 in Zeile 7 hängt von der Grösse des benutzten Icons, dessen HotSpot (und evtl auch vom Gerät bzw. dessen Auflösung) ab, aber nicht vom Ort oder Zoomfaktor. Da ich nur ein einziges Smartphone habe und meine App nur auf diesem laufen muss, habe ich eine allfällige Geräteabhängigkeit nicht weiter untersucht.

    Hoffe, das hilft jemandem.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Desperate ()