gpt4 book ai didi

reactjs - react-map-gl 自定义标记不会停留在缩放时的确切位置

转载 作者:行者123 更新时间:2023-12-05 08:40:38 26 4
gpt4 key购买 nike

我正在使用 Uber 的 react-map-gl 库加载 Mapbox map 。我已经通过我的 API 提供的 JSON 成功加载了带有自定义标记的 map (正如您从第一张图片中看到的那样)。

mapbox

不过,如果您查看休斯顿附近的绿色标记,它会出于某种原因偏离墨西哥湾的某个地方。但是,如果我放大那个区域......

zoomed in mapbox

您可以看到,当我放大时,标记会重新调整到正确的位置。什么会导致这样的事情?

import ReactMapGL, { Marker, NavigationControl, Popup } from 'react-map-gl';
import CityInfo from './city-info';
import 'mapbox-gl/dist/mapbox-gl.css';

class ExplorePage extends Component {
state = {
viewport: {
width : 400,
height : 400,
latitude : 38.789093,
longitude: -95.295881,
zoom : 3.7,
},
popupInfo: null,
};

componentDidMount() {
this.props.dispatch(explorepageActions.getFavoriteHikes());
}

_renderMarker = (marker, index) => {
return (
<Marker
anchor='bottom'
key={`marker-${index}`}
longitude={parseFloat(marker.longitude)}
latitude={parseFloat(marker.latitude)}
>
<Pin width={100} onClick={(event) => this._handleClick(event, marker)} />
</Marker>
);
};

_onViewportChange = viewport => this.setState({viewport});

render() {
const { explorepageData, loading } = this.props;
const { viewport } = this.state;

return (
<ExplorePageStyles>
{loading && <img src='/static/loading.svg' alt='loading' className='loading-img' />}
{explorepageData.data &&
<Fragment>
<Sidebar>
<ExploreSidebar favoriteHikes={explorepageData} />
</Sidebar>
<ReactMapGL
{...viewport}
mapboxApiAccessToken={MAPBOX_TOKEN}
width='100%'
height='100%'
style={{ float: 'right' }}
onViewportChange={this._onViewportChange}
attributionControl={false}
>
{explorepageData.data.map(this._renderMarker)}
{this._renderPopup()}
<div className="nav" style={navStyle}>
<NavigationControl />
</div>
</ReactMapGL>
</Fragment>
}
</ExplorePageStyles>
);
}

最佳答案

好吧,经过几天的折腾,我终于弄明白了。该问题与我对标记使用自定义图标有关。复制 example's pin使其正常工作。

关于reactjs - react-map-gl 自定义标记不会停留在缩放时的确切位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55015008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com