我使用“google-maps-react”,并尝试通过点击向我的地图添加新的标记。
目前,我可以通过控制台记录特定的latLng,但似乎无法创建新的LATLING。我还没反应过来。
我的onMapClick用于查找纬度和经度。但我认为我需要将位置添加到数组中,然后使用该位置更新地图。可能是错的
onMapClick = (map,maps,e) => {
const { latLng } = e;
const latitude = e.latLng.lat();
const longitude = e.latLng.lng();
console.log(latitude + ", " + longitude);
var marker = new window.google.maps.Marker({
position: e.latLng,
setMap: map,
});
}
Im目前的解决方案是,我只是在我的 render() 中硬编码了一些标记,数组的位置在 Marker 中
<Marker
onClick={this.onMarkerClick}
name={storedLocations[0]}
position={{lat:listLatitude[0], lan:listLongitude[0]}}
/>
我的信息窗口是:
<InfoWindow
marker={this.state.activeMarker}
visible={this.state.showingInfoWindow}
onClose={this.onClose}
>
<div>
<h4>{this.state.selectedPlace.name}</h4>
</div>
</InfoWindow>
</Map>
我的 onMapClick 可以查找纬度和经度。但我认为我需要将位置添加到数组中,然后使用该位置来更新地图。
这确实是React的方式,但与其通过Google Maps API实例化标记,不如考虑通过<code>state</code>保存数据(标记位置),React将执行以下操作:
class MapContainer extends React.Component {
constructor(props) {
super(props);
this.state = {
locations: []
};
this.handleMapClick = this.handleMapClick.bind(this);
}
handleMapClick = (ref, map, ev) => {
const location = ev.latLng;
this.setState(prevState => ({
locations: [...prevState.locations, location]
}));
map.panTo(location);
};
render() {
return (
<div className="map-container">
<Map
google={this.props.google}
className={"map"}
zoom={this.props.zoom}
initialCenter={this.props.center}
onClick={this.handleMapClick}
>
{this.state.locations.map((location, i) => {
return (
<Marker
key={i}
position={{ lat: location.lat(), lng: location.lng() }}
/>
);
})}
</Map>
</div>
);
}
}
解释:
>
位置
状态用于在单击地图后跟踪所有位置
位置
状态传递给标记组件以渲染标记
下一步可能是为标记列表引入一个单独的组件,在React中思考以下组件:
一种这样的技术是单一责任原则,也就是说,一个组件在理想情况下应该只做一件事。如果它最终增长,它应该被分解成更小的子组件。
const MarkersList = props => {
const { locations, ...markerProps } = props;
return (
<span>
{locations.map((location, i) => {
return (
<Marker
key={i}
{...markerProps}
position={{ lat: location.lat(), lng: location.lng() }}
/>
);
})}
</span>
);
};
这是一个演示程序,演示了如何通过< code>google-maps-react库在地图点击上添加一个标记
我想将事件侦听器添加到所有标记中,我正在使用GoogleMapsforRailsGem。这是我的密码 我试图将事件侦听器添加到所有标记中,但它没有发出任何警报。如何在google maps for rails中添加事件侦听器 我有一个数据数组,每个数据包含id,lat,lng
(1)https://stackoverflow.com/questions/34247347/initialize-google-map-to-zoom-to-bounds(2)bounds google maps (3)在google maps android api v2中设置最大缩放级别(4)android map v2缩放显示所有标记 (5)在android中调整google map(a
这对于短距离非常有效,但是对于长的折线段,latlng返回的是折线旅行的地方之外,因为它计算的是沿着地球表面的最短距离,而不是在平面地图上的最短距离。 在这方面的任何帮助都将不胜感激,希望我只是错过了一些明显的东西。
我有一个函数,以一个地名作为输入,并在谷歌地图上那个地方的lat和lng位置下降一个pin。它还使用lat和lng位置设置边界,将pin设置为Viewport。一切都很好,但旧的标记没有得到清除,而添加一个新的标记。我已经清除了标记数组,但它不起作用。这是我的代码
我知道周围也有类似的问题,但我无法找到一个可靠的答案,这是我的问题:有没有什么方法可以在没有谷歌地图引用的情况下将标记存储在ArrayList(或任何其他存储)中,然后简单地将它们添加到我的地图中? 背景:我有一个应用程序,目前有大约3500个标记。每个标记还有一个与之相关联的数据(布尔数组存储每个标记的数据,用于根据用户交互使它们可见/不可见)。目前,我使用扩展AsyncTask的类来获取这些标
我正在app engine上构建一个web应用程序。在我的例子中,这是建立在django Nonl的基础上的,但关键是它使用的是谷歌的数据存储。 我喜欢这样一个事实,即我不需要处理复制、分片、备份等,但有一件事总是妨碍我,那就是最终的一致性,这似乎妨碍了实现一个通用的Web应用程序模式,我称之为“添加 假设我有一个项目管理应用程序。项目是它的中心模型。现在有一个网页页面,我可以在其中看到所有项目的