【问题标题】:How can I use google maps inside Vue.js in ES6如何在 ES6 的 Vue.js 中使用谷歌地图
【发布时间】:2017-04-06 14:15:03
【问题描述】:

我想在 ES6 的 Vue.js 中使用谷歌地图和 jquery。

我不希望它成为一个组件或类似 vue-google-maps 的任何东西。 我只想导入谷歌地图,并像我一直使用它一样使用它。

我已经让 jquery 像这样工作了。

  import jQuery from 'jquery'
  var jq = window.Jquery = jQuery

现在我想对谷歌地图做同样的事情,这样我就可以访问“谷歌”变量。并在mounted() 方法中使用它。就这样……

  export default {
      mounted () {
           var map = google.maps///etc
      }
  }

无论如何我似乎都无法导入它。如果我只是在 index.html 页面上包含脚本,即使我将其设为全局对象,它也不可用。因为它是在 Vue.js 之后创建的

我已经尝试过 vue-google-maps,但我的用例非常具体,而且我需要很多我已经编写的旧代码,所以我只需要普通的旧谷歌地图而不是 VUE 组件。

我想你可以说,我希望我的应用程序的这一部分完全不受 Vue 控制。安装后只是普通的旧 Jquery。

请帮忙!

【问题讨论】:

  • 为什么投反对票?解释一下自己downvoter大声笑

标签: javascript jquery google-maps vue.js


【解决方案1】:

是的,你是对的。这实际上不是 Vue 的问题。这是一个 JavaScript 模块问题。

由于谷歌地图是在 IIFE 模式下编写的,你不能只导入它。你最好翻译成UMD或者commonjs模式。

如果您不确定该怎么做。也许您可以看看这个。 google-maps

您可以编写这样的模块,例如,my-google-map.js

import 'https://maps.googleapis.com/maps/api/js'
export default window.google

然后在你的 vue 文件中

import google from 'my-google-map.js'
console.log(google)

【讨论】:

  • 我尝试了 google-maps 模块。我只是收到一个错误消息。 this.setValues 不是函数,但在尝试启动地图时。它加载得很好,因为我可以控制台记录它就好了。但是当我启动地图时,我得到一个错误。所以也许它已经过时了,或者不再被维护了。你会认为这将是一个非常容易找到的模块,许多人已经复制了它。但我猜不是?
  • 是的,我同意。所以我建议你不要只使用那个模块。但因为我根本没有使用谷歌地图。我不能给出一些很好的解决方案。但是,我认为这更像是一个 umd、iife 等问题。也许你可以自己包装。哦,我有个好主意。我编辑 anwser。
【解决方案2】:

为什么不做以下事情?

<div>
 <img class="google-map" :src="googleUrl()">
</div>

methods: {
      googleUrl () {
        return 'https://maps.googleapis.com/maps/api/staticmap?zoom=16&scale=2&markers=color:blue|' + this.fullAddress() + '&size=250x200&sensor=false'
      },
      fullAddress () {
        return this.streetname + ' ' + this.housenumber + ',' + this.zipcode + ' ' + this.city
}

【讨论】:

  • 因为我需要地图的完全交互性。街景、信息窗口、滚动、缩放。基本上我的整个应用程序都专注于地图。
猜你喜欢
  • 2017-11-21
  • 2018-02-18
  • 2020-04-14
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 2011-09-12
  • 2019-09-07
相关资源
最近更新 更多