Попытка нового метода нанесения маркера на карту Google с моим lat / long, запрашиваемым из базы данных. Когда я создаю переменные внутри тега сценария jquery, он работает, но я не могу сделать вызов вне этого сценария. Но когда я пытаюсь установить эти переменные с помощью json_encode из массива php вне этого скрипта, консоль возвращается с
Uncaught SyntaxError: Неожиданный токен < Индекс: HTML: 29
<!DOCTYPE html>
<html>
<head>
<style>
#map {
width: 1200px;
height: 900px;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script src="http://code.jquery.com/jquery-1.11.3.min.js">></script>
<script type = "text/javascript">
function initialize() {
var myLatlng = new google.maps.LatLng(38.4403, -122.5463);
var mapOptions = {
zoom: 10,
center: myLatlng
}
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
title:"Hello World!"});
marker.setMap(map);
}
var latitude = <?php echo json_encode($lat);?>;
var longitude = <?php echo json_encode($long);?>;
var LatLong = new google.maps.LatLng(latitude, longitude);
var marker1 = new google.maps.Marker({
position: LatLong;
title:"Test"});
marker1.setMap(map);
</script>
</head>
<body onload = "initialize()">
<div id="map"></div>
</body>
</html>
PHP для запроса по базе данных:
<?php
require("server_info.php");
$connection=db2_connect($database, $username, $password);
if (!$connection) { die('Not connected : ' . db2_conn_error());}
$query = "SELECT lat,long FROM SCHOOL";
$stmt = db2_prepare($connection, $query);
$result = db2_execute($stmt);
$lat = array();
$long = array();
while ($row = db2_fetch_array($stmt)) {
$lat = $row[0];
$long = $row[1];
}
//echo json_encode($lat);
//echo json_encode($long);
db2_close($connection);
?>
Проблема в том, что ваш файл называется index.html
, По умолчанию только файлы с .php
суффиксы выполняются с использованием PHP. Так как у него есть .html
расширение, веб-сервер просто возвращает файл дословно в браузер, вместо того, чтобы запустить его через PHP, так <?php echo json_encode($lat); ?>
отправлено клиенту, и это не является допустимым Javascript.
Вы должны переименовать его в index.php
, затем он будет выполнен с использованием PHP, и переменные будут заменены.
Но похоже, что проблема не в этом. Вы никогда не устанавливаете переменные $lat
а также $long
в любом месте сценария. Вы устанавливаете их в совершенно другом сценарии.
Вероятно, вам следует использовать AJAX для вызова сценария запроса из Javascript.
Других решений пока нет …