gpt4 book ai didi

javascript - Drupal - 如何在 JavaScript 之前加载 google api?

转载 作者:行者123 更新时间:2023-12-03 12:42:58 25 4
gpt4 key购买 nike

我构建了一个自定义谷歌地图来实现到我的 drupal 网站的首页,该网站使用 javascript 和 php,并且我遇到了一个问题,谷歌地图 api 直到依赖它的 php 文件被调用之后才被调用叫。它在我的控制台中按以下顺序记录:

ReferenceError: google is not defined map.php:6

GET http://maps.googleapis.com/maps/api/js/AuthenticationService.Authenticate [HTTP/1.1 200 OK 74ms]

我一直在网上研究我的问题,并尝试了不同的资源,但还没有任何运气。我已经提供了我尝试在文件中调用 google map api 的方法。我已将其放置在我的页面中--front.tpl.php:

<script type="application/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>

这是我的整个map.php,它是使用javascript和php保存谷歌地图的php文件,并通过template.php文件中的drupal_add_js调用:

var script = document.createElement('script');
script.src = 'http://maps.googleapis.com/maps/api/js?sensor=false';
script.type = 'application/javascript';

var map = null;
var infowindow = new google.maps.InfoWindow();
var markers = [


<?php
$server = 'db.*****';$user = '*****';$database = '*****';$password = '*****';
$db = mysqli_connect($server, $user, $password, $database);

if (isset($_GET['routeselected']))
{
$result = mysqli_query($db, "SELECT * FROM STOP INNER JOIN RouteStop ON Stop.Stop_ID = RouteStop.Stop_ID WHERE RouteStop.Route_ID = " . (int)$_GET['routeselected'] . " AND RouteStop.Company_ID = " . (int)$_GET['companyselected']);
while ($row = mysqli_fetch_array($result))
echo "{\"title\": '".$row['Stop_ID']."', \"lat\": '".$row['Latitude']."', \"lng\": '".$row['Longitude']."', \"description\": '".$row['StopName']."'},";
}
?>

];

window.onload = function () {

var mapOptions = {
center: new google.maps.LatLng(
parseFloat(markers[0].lat),
parseFloat(markers[0].lng)),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var path = new google.maps.MVCArray();
var service = new google.maps.DirectionsService();
var infoWindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var poly = new google.maps.Polyline({map: map, strokeColor: '#F3443C'});

var lat_lng = new Array();
for (i = 0; i < markers.length; i++) {
var data = markers[i]
var myLatlng = new google.maps.LatLng(data.lat, data.lng);
lat_lng.push(myLatlng);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: data.title
});
(function (marker, data) {
google.maps.event.addListener(marker, "click", function (e) {
infoWindow.setContent(data.description);
infoWindow.open(map, marker);
});
})(marker, data);
}
for (var i = 0; i < markers.length; i++) {
if ((i + 1) < markers.length) {
var src = new google.maps.LatLng(parseFloat(markers[i].lat),
parseFloat(markers[i].lng));
var des = new google.maps.LatLng(parseFloat(markers[i+1].lat),
parseFloat(markers[i+1].lng));
service.route({
origin: src,
destination: des,
travelMode: google.maps.DirectionsTravelMode.DRIVING
}, function (result, status) {
if (status == google.maps.DirectionsStatus.OK) {
for (var i = 0, len = result.routes[0].overview_path.length; i < len; i++) {
path.push(result.routes[0].overview_path[i]);
}
poly.setPath(path);
}
});
}
}
}

有人知道我的问题的解决方案吗?感谢您提供的所有帮助!

最佳答案

  1. 我想你可以在 html.tpl.php 的开头添加 Google map 脚本 <head>...</head> .

  2. 或者在加载map.php之前使用drupal_add_js在template.php中加载“http://maps.googleapis.com/maps/api/js?sensor=false ”。像这样:drupal_add_js(' http://maps.googleapis.com/maps/api/js?sensor=false ', '外部');

  3. 由于第 6 行中未定义 google 对象,因此包含您的 javascript 文件的内容一定是错误的(基本上第 1-3 行似乎无法像这样工作;))...查看此 StackOverflow 帖子并尝试使用建议的代码: How to include js file in another js file?

关于javascript - Drupal - 如何在 JavaScript 之前加载 google api?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23462614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com