关于javascript:动态设置googleapi密钥

dynamically set googleapi key

我有一个应用程序想要嵌入谷歌地图,需要将这个密钥放入一个配置文件中。所以我要做的是:

在配置文件JS中

google_map_key="mykeyofgoogleapi";

在索引文件中

1
2
<script type="text/javascript"
        src="https://maps.googleapis.com/maps/api/js?key="+GOOGLE_MAP_KEY+"&sensor=true">

问题是我看到的google的网址是

1
Request URL:  https://maps.googleapis.com/maps/api/js?key=

URL的其余部分丢失。

看起来我在concat的url中做了一些不好的事情。怎么了?


在指定标记的地方,您编写的是HTML而不是JavaScript(即使您使用它来加载到JS文件中)。所以不能在HTML中引用javascript变量。

为此,您需要使用JavaScript而不是HTML加载GoogleMapsJS。例如,请参见文档中的示例:https://developers.google.com/maps/documentation/javascript/examples/map-simple-async

1
2
3
4
5
6
7
8
9
10
11
var GOOGLE_MAP_KEY ="mykeyofgoogleapi";

function loadScript() {
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = 'https://maps.googleapis.com/maps/api/js?v=3' +
      '&key=' + GOOGLE_MAP_KEY +'&callback=initialize'; //& needed
  document.body.appendChild(script);
}

window.onload = loadScript;

您必须动态加载脚本。

您也可以考虑使用最新版本的MAP API(V3):


在HTML中不能使用这样的+操作符。它特别是一个javascript操作符。由于HTML不识别+,它只终止key=处的字符串。

另一种解决方案是在JavaScript中使用Ajax来导入URL。

有关详细信息,请参阅此文档:https://api.jquery.com/jquery.getscript/。它将需要使用jquery。