Я создаю веб-страницу, где у меня есть карта Google, которая (или должна) заполняться данными из моей базы данных MySQL, расположенной на PHPmyAdmin. Однако маркеры не отображаются на карте.
Я сделал спокойный сервер в python, где я использую маршрут для получения данных, а затем клиент ПОЛУЧАЕТ эти данные для размещения на карте, которые я могу без проблем в моем браузере.
После отладки в браузере я вижу, что данные действительно поступают в мой клиент в виде строки json и сортируются по моему для l oop.
Изображение, показывающее данные в клиенте
Поражает функцию displaylocation(location)
[см. Изображение], однако я действительно не могу понять, почему маркеры не появляются на карта. Во время отладки location.address
, location.name
, location.lat
et c показывают, что адрес, имя и лат не определены. Я не уверен, в этом ли проблема или как я бы решил это. У меня были проблемы с API и передачи данных моему клиенту, однако я считаю, что я решил эти проблемы. Я могу только предположить, что проблема связана с функцией displaylocation
, но я уверен, что кто-то с большим знанием JavaScript мог бы сказать мне так или иначе.
Вот мой код, любые подсказки будут очень получены .
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>AWD_CLient</title>
<style type="text/css">
body {
font: normal 14px Verdana;
}
h1 {
font-size: 24px;
}
h2 {
font-size: 18px;
}
#sidebar {
float: right;
width: 30%;
}
#main {
padding-right: 15px;
}
.infoWindow {
width: 220px;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDNMFE1XBzVnhPOI5IH90FrwumF"></script>
<script type="text/javascript">
var map;
// York City Centre
var center = new google.maps.LatLng(53.957741, -1.082260);
var geocoder = new google.maps.Geocoder();
var infowindow = new google.maps.InfoWindow();
function initMap() {
var mapOptions = {
zoom: 13,
center: center,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
makeRequest(function(data) {
var data = JSON.parse(data.responseText);
for (var i = 0; i < data.length; i++) {
displayLocation(data[i]);
}
});
}
//Displays the data points on the map
function displayLocation(location) {
var content = '<div class="infoWindow"><strong>' + location.name + '</strong>' +
'<br/>' + location.address +
'<br/>' + location.description + '</div>';
if (parseInt(location.lat) == 0) {
geocoder.geocode({
'address': location.address
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: location.name
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(content);
infowindow.open(map, marker);
});
}
});
} else {
var position = new google.maps.LatLng(parseFloat(location.lat), parseFloat(location.lon));
var marker = new google.maps.Marker({
map: map,
position: position,
title: location.name
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(content);
infowindow.open(map, marker);
});
}
}
//Makes a request for the data from the server route
function makeRequest(callback) {
var request;
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
} else {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
callback(request);
}
}
//var jsonString = "{id : \"dbMap\"}";
request.open("GET", "http://0.0.0.0:8080/dbMap", true);
request.send();
}
</script>
</head>
<body onload="initMap();">
<h1>Team Locations</h1>
<section id="sidebar">
<div id="directions_panel"></div>
</section>
<section id="main">
<div id="map_canvas" style="width: 70%; height: 500px;"></div>
</section>
</body>
</html>
* * * * * * JSON с моего сервера выглядит так, когда я просматриваю конечную точку в своем браузере, если это вообще помогает. Приносим извинения за неправильное отображение.
[
[
1,
"Test1",
"york",
53.95734,
-1.086833,
"test1"
],
[
2,
"Test2",
"york",
53.961533,
-1.085244,
"test2"
],
[
3,
"Test3",
"york",
53.963051,
-1.078202,
"test3"
],
[
4,
"Test4",
"york",
53.963104,
-1.082185,
"test4"
],
[
5,
"Test5",
"york",
53.962978,
-1.08532,
"test5"
],
[
6,
"Test6",
"york",
53.9575,
-1.09227,
"test6"
],
[
7,
"Test7",
"york",
53.964924,
-1.074406,
"test7"
],
[
8,
"Test8",
"york",
53.961391,
-1.073976,
"test8"
]
]
Вот конечная точка на моем сервере.
@testRestServer.route("/dbMap", methods=['GET', 'POST'])
def getData():
cursor.execute("SELECT * FROM markers ")
return jsonify(cursor.fetchall())