在我的 Reactjs 网络应用程序中集成谷歌地图后,如何获得“纬度”和“经度”?

Posted

技术标签:

【中文标题】在我的 Reactjs 网络应用程序中集成谷歌地图后,如何获得“纬度”和“经度”?【英文标题】:How can i get "latitude" and "longitude" after integrating google maps in my Reactjs web app? 【发布时间】:2019-08-29 22:05:54 【问题描述】:

我正在制作一个 Reactjs 应用程序,我想在应用程序中显示谷歌地图...我想实现以下功能

(1) 我的应用需要用户获取他当前位置并获取“纬度”和“经度”的权限并保存它们。

(2) 用户选择地图上的标记,我想获取那些经纬度点。

首先更重要。请帮帮我。请多谢。

https://www.youtube.com/watch?v=4z4hxEHlsxc

我看过这个视频,这很有帮助,但他没有教 (1) 问题

【问题讨论】:

【参考方案1】:

请参阅我的 Codepen 示例 here。你可以完成你的第一个任务。对于第二个任务,请阅读文档。这很简单。链接如下。

Markers documentation

Events documentation

另外,这个library 非常擅长处理谷歌地图。看看吧。

class App extends React.Component 

  constructor(props) 
    super(props);

    this.map = null;
    this.marker = null;

    this.state = 
      currentLocation: 
        lat: 0.0,
        lng: 0.0
      
    ;
  

  componentDidMount() 
    if (navigator && navigator.geolocation) 
      navigator.geolocation.getCurrentPosition(pos => 
        const coords = pos.coords;
        this.setState(
          currentLocation: 
            lat: coords.latitude,
            lng: coords.longitude
          
        );
        this.setPin(coords.latitude, coords.longitude)
      );

      this.map = new google.maps.Map(document.getElementById('map'), 
          center: lat: -34.397, lng: 150.644,
          zoom: 8
        );
    else
      //TODO:
    
  

  setPin(lat, lng) 
    if(this.map) 
      this.map.setCenter(lat: lat, lng: lng);

      if(this.marker) 
        this.marker.setMap(null);
        this.marker = null;
      

      this.marker = new google.maps.Marker(
        position: lat: lat, lng: lng,
        map: this.map,
        title: 'Current Location'
      );

    else
      console.log("Map has not loaded yet")
    
  

  render() 
    return (
      <div class="app">
        this.state.currentLocation.lat  / this.state.currentLocation.lng
        <div id="map"></div>
      </div>
    );
  


ReactDOM.render(
    <App />,
  document.getElementById('main')
);

【讨论】:

非常感谢。你能帮我如何从中提取可重用的组件吗?就像我有高阶组件 我有“位置: lat : ... , lng:... ” 状态。我想渲染这个。 我想从这个“地图”组件中获取纬度和经度。请帮帮我。 你能给我发一个你已经实现的链接吗?或者创建一个 Codepen 并发送给我? 我刚刚使用了你上面提到的链接。 codepen.io/samma89/pen/gyLgEJ 它说可以'读取未定义的属性'map'。而且,你使用过 。但是在 reactjs 中,我们不处理 Real DOM。请帮帮我。 你没有使用“GOOGLE API KEY”。并显示“此页面无法正确加载 Google 地图。”【参考方案2】:

使用这个库 https://www.npmjs.com/package/react-geocode

import Geocode from "react-geocode";

/// set Google Maps Geocoding API for purposes of quota management
Geocode.setApiKey("xxxxxxxxxxxx");
Geocode.setLangu`enter code here`age("en");

// Get address from latidude & longitude.
Geocode.fromLatLng("48.8583701", "2.2922926").then(
  response => 
    const address = response.results[0].formatted_address;
    console.log(address);
  ,
  error => 
    console.error(error);
  
);

// Get latidude & longitude from address.
Geocode.fromAddress("Eiffel Tower").then(
  response => 
    const  lat, lng  = response.results[0].geometry.location;
    console.log(lat, lng);
  ,
  error => 
    console.error(error);
  
);

【讨论】:

以上是关于在我的 Reactjs 网络应用程序中集成谷歌地图后,如何获得“纬度”和“经度”?的主要内容,如果未能解决你的问题,请参考以下文章

Android 实时谷歌地图位置跟踪

如何在 Reactjs 中的谷歌地图上嵌入一个确切的位置

iPhone 应用程序内的谷歌地图集成

谷歌地图加载失败

Android:如何使用谷歌地图在我的应用中显示用户当前位置?

Java应用程序中的谷歌地图