CSS / JavaScript: Hilfe bei Leaflet-Integration?

2 Antworten

Punkt 1: Wo liegt hier nun das konkrete Problem? Die Anweisungen zur Integration sind doch klar und verständlich: Das externe Skript mit ins Dokument laden und den (angepassten) Code-Snippet bei der Map-Initialisierung hinzufügen. Das könnte direkt vor dem setView-Aufruf für map1 sein.

Punkt 2: Möglicherweise reicht schon diese Zeile für eine Implementation.

map1.on("moveend zoomend", () => map1.setBounds(map.getBounds());

Anmerkungen zu deinem Markup:

Dieses ist an mehreren Stellen invalid. Die einzigen beiden Elemente, die unbedingt notwendig sind, hast du bspw. weggelassen.

  • Es fehlt der Doctype.
  • Es fehlt ein title-Tag im head-Bereich.
  • Der link-Tag wirkt völlig kaputt.

Korrektur für den link-Tag:

<link rel="stylesheet nofollow noopener" href="https: //unpkg.com/leaflet@1.4.0/dist/leaflet.css" data-warning>

Das Leerzeichen vor den Slashes muss natürlich noch raus. Ich setze es hier nur wegen der GF-Editor, der mir sonst den Code vermauscheln würde.

  • Die beiden script-Tags sind ebenfalls kaputt.

Korrektur:

<script src="https: //unpkg.com/leaflet@1.4.0/dist/leaflet.js" rel="nofollow noopener" data-warning></script>
<script src="http: //unpkg.com/leaflet@1.3.1/dist/leaflet.js" rel="nofollow noopener" data-warning></script>

Die Werte nofollow und noopener für das rel-Attribut sind meines Erachtens auch unnötig.

  • Dein Button löst keinen HTTP Request aus, ist also kein Submit-Button. Er sollte daher auch als normaler Button gekennzeichnet werden.
<button id="suchen" type="button">Suchen</button>
  • Ich kann wohl davon ausgehen, dass du nicht viel Ahnung von CSS und daher einfach Inline-Styles ins Markup geklatscht hast, welches Elemente zudem absolut positioniert (nicht so gut, da nicht so flexibel). Dabei lassen sich Elemente ziemlich leicht relativ zueinander positionieren. Setze das Flexbox-Layout ein. Folgend ein Beispiel:

HTML:

<div id="container">
  <div></div>
  <div></div>
</div>

CSS:

#container {
  display: flex;
}

/* following only for test purposes */
#container > div {
  background-color: red;
  height: 250px;
  margin: 5px;
  width: 250px;
}

Demo

Wie man CSS in HTML einbindet, lässt sich hier nachlesen.


InfoGirl777 
Beitragsersteller
 27.06.2019, 16:04

Vielen Dank, hat alles soweit geklappt. Jedoch funktioniert bei mir dieser code nicht.

  map1.on("moveend zoomend", () => map1.setBounds(map.getBounds())); 

Wo setze ich ihn ein?

0
regex9  27.06.2019, 16:46
@InfoGirl777

Die initMaps wäre ein geeigneter Platz, frühestens nach Definition von map. Die on-Funktion sollte zudem über map aufgerufen werden, nicht map1. Da muss ich mich vertippt haben.

0