css Google Maps标记聚类的问题

yb3bgrhw  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(131)

在一个React项目中,我们有一个带有可交互标记的Google Maps API,但我们未能在我们的项目中实现标记聚类。进口:

import GoogleMap from "google-maps-react-markers";
import { MarkerClusterer } from "@react-google-maps/api";
import Marker from "./marker";

字符串
我们项目的Google Map API代码:

<div className="map-container" ref={mapRef}>
        <GoogleMap
          apiKey=
          defaultCenter={{ lat: 20, lng: 20 }}
          defaultZoom={14}
          onGoogleApiLoaded={onGoogleApiLoaded}
          onChange={onMapChange}
        >
          {renderedMarkers}
        </GoogleMap>
</div>


标记代码:

const renderedMarkers = filteredMarkersByTags.map(
    (
      { lat, lng, name, variant, email, description, image, date, tag, _id },
      index
    ) => {
      if (showMyEntries && email !== profile.email) {
        return null;
      }

      return (
        <Marker
          key={index}
          lat={lat}
          lng={lng}
          markerId={name}
          variant={variant}
          markerVariant={variant}
          markerDescription={description}
          markerEmail={email}
          markerDate={date}
          petImage={image}
          markerTags={tag}
          dbID={_id}
          onClick={onMarkerClick}
          className="marker"
        />
      );
    }
  );


当我们缩小时,标记仍然保持为个体,而不是集群,以获得更清晰的观看体验,提前感谢aynone,他可以提供帮助

<MarkerClusterer 
   averageCenter enableRetinaIcons gridSize={60}>
   { renderedMarkers }
</MarkerClusterer>


我们尝试查看默认的聚类方法是否有效,因此尝试此片段以查看它是否会对标记进行聚类。我们得到的唯一输出是此尝试的“脚本错误”。

qv7cva1a

qv7cva1a1#

提到的@react-google-maps/api库的文档不够详细。我发现the example带有标记聚类器,我认为renderedMarkers应该是一个函数,并按以下方式查看:

(clusterer) => (
  <>
    {filteredMarkersByTags.map(
    ({ lat, lng, name, variant, email, description, image, date, tag, _id }, index) => {
      if (showMyEntries && email !== profile.email) {
        return null;
      }

      return (
        <Marker
          key={index}
          lat={lat}
          lng={lng}
          clusterer={clusterer}
          position={{lat: lat, lng: lng}}
          markerId={name}
          variant={variant}
          markerVariant={variant}
          markerDescription={description}
          markerEmail={email}
          markerDate={date}
          petImage={image}
          markerTags={tag}
          dbID={_id}
          onClick={onMarkerClick}
          className="marker"
        />
      );
    }
  )}
  </>
)

字符串
注意两个新属性clustererposition(在上述示例中,Marker接收位置对象,而不是两个单独的参数latlng)。
如果没有帮助,我建议使用官方的@googlemaps/markerclusterer库。documentation

相关问题