2015-06-24 3 views
-1

Я пытаюсь добавить маркеры на карту google с запрошенными координатами из базы данных mysql. сценарий показан ниже в файле с именем connection.php.запуск php-скрипта из javascript

$query = "SELECT site, latitude, longitude, pollution FROM pollution_monitoring.locations"; 
$result = mysqli_query($conn, $query); 

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) 
{ 
    $site  = $row['site']; 
    $latitude = $row['latitude']; 
    $longitude = $row['longitude']; 
    $pollution = $row['pollution']; 

    echo ("addMarker($latitude,$longitude,'<b>$site</b><br/>$pollution');\n");  
} 

addMarker() является функцией JavaScript, которая была определена в приведенном ниже файле

var icon = new google.maps.MarkerImage("http://maps.google.com/mapfiles/ms/micons/red.png", 
    new google.maps.Size(32, 32), new google.maps.Point(0, 0), 
    new google.maps.Point(16, 32)); 
var center = null; 
var map = null; 
var currentPopup; 
var bounds = new google.maps.LatLngBounds(); 
google.maps.event.addDomListener(window, 'load', initialize); 

function addMarker(lat, lng, info) { 
    var pt = new google.maps.LatLng(lat, lng); 
    bounds.extend(pt); 
    var marker = new google.maps.Marker({ 
     position: pt, 
     icon: icon, 
     map: map 
    }); 
    var popup = new google.maps.InfoWindow({ 
     content: info, 
     maxWidth: 500 
    }); 
    google.maps.event.addListener(marker, "click", function() { 
     if (currentPopup != null) { 
      currentPopup.close(); 
      currentPopup = null; 
     } 
     popup.open(map, marker); 
     currentPopup = popup; 
    }); 
    google.maps.event.addListener(popup, "closeclick", function() { 
     map.panTo(center); 
     currentPopup = null; 
    }); 
} 

function initialize() { 
    var mapProp = { 
     center: new google.maps.LatLng(-29.335989, 27.483622999999966), 
     zoom: 17, 
     mapTypeId: google.maps.MapTypeId.HYBRID, 
     mapTypeControl: true, 
     zoomControl: true, 
     scaleControl: true, 
     streetViewControl: true, 
     overviewMapControl: true, 
     rotateControl: true, 
     mapTypeControlOptions: { 
      style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR 
     }, 
     navigationControl: true, 
     navigationControlOptions: { 
      style: google.maps.NavigationControlStyle.SMALL 
     } 
    }; 
    $.get('connection.php'); 

    var map = new google.maps.Map(document.getElementById("googleMap"), mapProp); 
    google.maps.event.addDomListener(window, 'load', initialize); 

выше сценарий будет использоваться для загрузки карты Google и должны маркеров, добавленных на карту. Я думал, что результат скрипта php (функция addMarker) будет запущен с добавлением маркеров на карту, но этого не произойдет. JavaScript затем включается в файл jsp. Карта загружается, но маркеры не добавляются.

что я делаю неправильно?

+0

Что тонированное код выглядит? – geocodezip

+0

Лучший способ сделать это - получить маркеры как JSON. Используйте 'json_encode' в массиве результатов и посмотрите [этот ответ] (http://stackoverflow.com/a/15145021/488074), чтобы узнать, как извлекать маркеры как JSON. – vonUbisch

ответ

0

Вы должны переписать скрипт для генерации данных в формате JSON:

header('Content-Type: application/json'); 

$query = "SELECT site,latitude,longitude,pollution FROM pollution_monitoring.locations"; 
$result = mysqli_query($conn,$query); 

$i = 0; 
echo '['; 
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) 
{ 
    if ($i++ != 0) echo ','; 
    echo json_encode($row);  
} 
echo ']'; 

Затем добавить маркеры с помощью JavaScript:

$.getJSON('connection.php', function(data) { 
    for (var i = 0; i < data[i]; i++) { 
     addMarker(data[i].latitude, data[i].longitude, "<b>" + data[i].site + "</b><br />" + data[i].pollution); 
    } 
}); 
+0

Я добавил код выше на php. когда я запускаю php-файл, я получаю Ошибка анализа: ошибка синтаксического анализа, ожидающая '')' ' –

+0

Согласно http://phpcodechecker.com/ в приведенном выше коде не должно быть синтаксических ошибок. Однако я только заметил, что сгенерированный массив JSON не содержит запятых. Я исправлю это через мгновение. – just95

Смежные вопросы