2

我正在寻找使每个标记之间的所有折线“对齐道路”的方法,而不是在点 a 和 b 之间绘制直线。因此,在任何两点之间,我希望将这些点自动放置在最近的道路上(如果标记未放置在道路上),并且希望在两点之间的最短道路上生成一条折线。我刚刚开始研究谷歌地图 API,似乎他们有这个功能,但我不想改变我已经拥有的一切。这是我的代码。

import React from "react";
import { useSelector, useDispatch } from "react-redux";
import { MapContainer, TileLayer, Polyline } from "react-leaflet";
import "../styles/Map.css";
import AddMarkers from "./AddMarkers";

const Map = () => {
  const markers = useSelector((state) => state.markers);

  return (
    <div className="leaflet-container">
      <MapContainer
        center={[50.868031999999996, -9]}
        zoom={20}
        scrollWheelZoom={true}
      >
        <TileLayer
          attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
          url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
        />
        <AddMarkers />
        {markers.length > 1 && (
          <Polyline
            positions={markers.map((marker) => {
              return [marker.lat, marker.lng];
            })}
          />
        )}
      </MapContainer>
    </div>
  );
};

export default Map;

4

1 回答 1

0

看来您可能会搜索:https ://github.com/makinacorpus/Leaflet.Snap

这应该可以使可拖动标记捕捉到折线和其他图层。此页面中的 Demo-Link 已损坏,但它似乎在 GitHub-Page 中有详细记录,如何使用。我认为您需要使用该部分Leaflet.Draw进行实施。

祝您好运,让您的地图按预期工作。

于 2021-05-20T11:07:04.173 回答