未在聚合物上显示位置(使用 Google 地图)

Posted

技术标签:

【中文标题】未在聚合物上显示位置(使用 Google 地图)【英文标题】:Not showing location on polymer (working with Google Maps) 【发布时间】:2015-02-03 14:10:36 【问题描述】:

我想在网络中获取设备的位置,然后在 Google 地图上显示它。脚本正确获取坐标,但是当我想在模板中使用它时,它不起作用。

这是我的脚本,并且正在正确获取我的坐标:

<script>

Polymer(

  latitude: null,
  longitude: null,

  ready: function()
    this.getLocation();
  ,

  getLocation: function() 
    if (navigator.geolocation) 
      navigator.geolocation.getCurrentPosition(this.showPosition);
     else  
    
  ,

  showPosition: function(position) 
    console.log(position);
      this.latitude = position.coords.latitude;
      this.longitude = position.coords.longitude;
      console.log(this.latitude+' / '+this.longitude);
  ,

);
</script>

但是在我的模板中,当我使用这条线时不起作用,我不知道为什么。

  <google-map id="google_map" latitude="latitude" longitude="longitude"></google-map>

如果我通过 position 更改经度参数 latitude 和 longitude,则得到每个字段中纬度和经度的总和。

有什么想法吗?谢谢!

PS:这是代码的一部分。显然我已经在 Polymer 中导入了谷歌地图的元素。

【问题讨论】:

尝试将纬度和经度存储在变量中,并使用正常工作的脚本进行设置,然后尝试使用声明的变量不工作的代码。 我不知道它坏在哪里,但首先是看看你是否能看到一张已知纬度和经度值的地图。不要使用数据绑定。如果您没有看到地图,则说明您没有为地图设置高度。获得地图显示后,您应该可以使用绑定。完整的代码也很好。 【参考方案1】:

使用geolocation 元素为我解决这个问题是一种优雅的方式,使用网络组件。

你可以在the demo page找到如何使用它。

使用 bower 很容易将其添加到您的项目中:

bower install ebidel/geo-location --save

在您的代码中,您只需添加 html 导入并使用组件:

<link rel="import" href="../bower_components/geo-location/geo-location.html">

<geo-location watch-pos latitude=" latitude " longitude=" longitude "></geo-location>

这个网络组件暴露了用户的位置。然后您可以使用 latitude  longitude 访问坐标。好消息是,如果您使用移动设备移动,位置会实时更新(参见演示页面执行)。

【讨论】:

您的回答很好,但是,它不适用于 OS X 和 ios 上的 Safari。

以上是关于未在聚合物上显示位置(使用 Google 地图)的主要内容,如果未能解决你的问题,请参考以下文章

标记未在 Android 中的地图上显示

谷歌地图未在 vue.js 中显示

在 Google 地图中显示我的当前位置

谷歌地图标记未在 Chrome 中显示

React Native mapview:标记未在IOS上显示

Google Maps API 未在 iPad 上加载