leaflet-rotate icon indicating copy to clipboard operation
leaflet-rotate copied to clipboard

Marker pop up is not aligning on rotate

Open ragavendra opened this issue 9 months ago • 1 comments

Not sure why the popup(s) do not align with the marker's on rotate like in the below screen unlike in the example.

image

<!DOCTYPE html>
<html lang="en">

<head>
  <base target="_top">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>Mobile tutorial - Leaflet</title>

  <link rel="shortcut icon" type="image/x-icon"
    href="docs/images/favicon.ico" />

  <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css"
    integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
    crossorigin="" />
  <script src="https://unpkg.com/[email protected]/dist/leaflet.js"
    integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo="
    crossorigin=""></script>

  <script
    src="https://unpkg.com/[email protected]/dist/leaflet-rotate-src.js"></script>

  <style>
    html,
    body {
      height: 100%;
      margin: 0;
    }

    .leaflet-container {
      height: 400px;
      width: 600px;
      max-width: 100%;
      max-height: 100%;
    }
  </style>

  <style>
    body {
      padding: 0;
      margin: 0;
    }

    #map {
      height: 100%;
      width: 100vw;
    }
  </style>
</head>

<body>

  <div id='map'></div>

  <script>
    let latitude = 49.38225199447305;
    let longitude = -122.1169636931414;
    latitude = 49.303882;
    longitude = -122.114965;
    var stopIcon = L.icon({
        // iconAnchor: [14, 35],
        iconRetinaUrl: stop.realTimesAvailable ? 'marker-b.png' : 'marker-r.png',
        iconSize: [28, 35],
        iconUrl: stop.realTimesAvailable ? 'marker-b.png' : 'marker-r.png',
        // popupAnchor: [1, -35],
        shadowAnchor: [3, 34],
        shadowRetinaUrl: 'marker-shadow.png',
        shadowSize: [28, 39],
        shadowUrl: 'marker-shadow.png',
      });

    const map = L.map('map', {
        center: [latitude, longitude],
        // layers: L.mapquest.tileLayer('map'),
        zoom: 10,
        zoomAnimation: false, /* DEBUG: L.Renderer._updateTransform() */
        rotate: true,
        rotateControl: {
          closeOnZeroBearing: false,
          position: 'bottomright',
        },
        bearing: 0,
        // attributionControl: false,
        // zoomControl: false,
        // compassBearing: true,
        // trackContainerMutation: false,
        shiftKeyRotate: true,
        // touchGestures: true,
        touchRotate: true,
      // touchZoom: true
    }).fitWorld();

    const tiles = L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
      maxZoom: 19,
      attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
    }).addTo(map);


    function onLocationFound(e) {
      const radius = e.accuracy / 2;

      var stopIcon = L.icon({
        iconAnchor: [14, 35],
        iconRetinaUrl: stop.realTimesAvailable ? 'marker-b.png' : 'marker-r.png',
        iconSize: [28, 35],
        iconUrl: stop.realTimesAvailable ? 'marker-b.png' : 'marker-r.png',
        popupAnchor: [1, -35],
        shadowAnchor: [3, 34],
        shadowRetinaUrl: 'marker-shadow.png',
        shadowSize: [28, 39],
        shadowUrl: 'marker-shadow.png',
      });

      const locationMarker = L.marker(e.latlng, {
        // icon: stopIcon
       }).addTo(map)
        .bindPopup(`You are within ${radius} meters from this point`);

        latitude = e.latlng[0] - 0.00003;
        longitude = e.latlng[1] - 0.00003;

      const locationCircle = L.circle(e.latlng, radius).addTo(map);
    }


  const locationMarker2 = L.marker([latitude, longitude], {
    // icon: stopIcon
  }).addTo(map)
    .bindPopup(`You are within x meters from this point 2`);


    function onLocationError(e) {
      alert(e.message);
    }

    map.on('locationfound', onLocationFound);
    map.on('locationerror', onLocationError);

    // map.locate({ setView: true, maxZoom: 10 });

    /*
    L.marker([49.406953, -122.718538], {
        draggable: true,
        // icon: stopIcon
      })
        // keepInView: true  is not allowing to drag map
        // .bindPopup(popUp, { maxHeight: 210, maxWidth: 100 });
        .bindPopup("Content here", { maxHeight: 210, maxWidth: 150, content: "content goes here" })

        // allMarkers[stop["stopCode"]] = marker;
        // allMarkers[stop.stopCode]
        .addTo(map);*/
  </script>

</body>

</html>

ragavendra avatar May 03 '24 20:05 ragavendra

Answering my own question. Commenting out zoomAnimation: false fixed the issue.

ragavendra avatar May 03 '24 21:05 ragavendra