Получить значения из mssql, чтобы добавить новые маркеры в Google Maps - PullRequest
1 голос
/ 23 апреля 2011

Может ли кто-нибудь помочь мне с этим кодом ... В основном я хочу вывести карту Google с местоположениями маркеров из моей базы данных MSSQL. Я подключаюсь к базе данных и выдаю данные из базы данных без каких-либо проблем. Значения в моей базе данных, которые нужно использовать, это широта и долгота

Мне просто нужна помощь, чтобы получить информацию о широте и долготе из базы данных в массив, который можно передать в "var markers = createMarker". Кто-нибудь может предложить какой-либо код или совет?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
  Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html;
    charset=utf-8"/>
    <title>Google Maps JavaScript API Example</title>
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=ABQIAAAAFdAFQ5eUeLToBjop7wxvVRQwhZZS-c1L0GQSo2zewspgIUCbcBQLESvgR7pk_2Z2FMWsfROoCbyJrw" type="text/javascript"></script>
    <script type="text/javascript">
    //<![CDATA[
    function load() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(
        document.getElementById("map"));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.addMapType(G_SATELLITE_3D_MAP);
        map.setCenter(
        new GLatLng(37.4419, -122.1419), 13);
        function createMarker(point, text, title) {
          var marker =
          new GMarker(point,{title:title});
          return marker;
        }
        <?php


        $points = Array(
         "37.4389, -122.1389",
        "37.4419, -122.1419",
         "37.4449, -122.1449");
        foreach ($points as $key => $point) {
        ?>

        <!-- ADD NEW MARKERS FROM A DATABASE -->

        var marker = createMarker(  
        new GLatLng(<?php echo $point ?>)
        );
        map.addOverlay(marker);
        <?php } ?>
      }
    }
    //]]>
    </script>

  </head>
  <body onload="load()" onunload="GUnload()">


    <div id="map"
    style="width: 500px; height: 300px"></div>

    <?php
    /*data base connection */


    /* SQL query */
$tsql = ("SELECT gps_lat
      ,gps_long
  FROM location");

  $result = sqlsrv_query($conn,$tsql);

if( $result === false)
{
     echo "Error in query preparation/execution.\n";
     die( print_r( sqlsrv_errors(), true));
}



/*Display the table */
// keeps getting the next row until there are no more to get
while($points = sqlsrv_fetch_array( $result )) {
    echo $points['gps_lat'];
    echo ',';
    echo $points['gps_long'];
    echo "</br>";
}


/* Close the connection. */
sqlsrv_close( $conn);


?>
  </body>
</html>

Я попытался создать новые маркеры, используя метод, описанный ниже, но мне не удалось. Кто-нибудь может указать что-то не так с кодом ниже или дать мне какой-нибудь совет?

  //<![CDATA[
    function load() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(
        document.getElementById("map"));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.addMapType(G_SATELLITE_3D_MAP);
        map.setCenter(
        new GLatLng(37.4419, -122.1419), 13);
        function createMarker(point, text, title) {
          var marker =
          new GMarker(point,{title:title});
          return marker;
        }
        <?php
        /*data base connection */


        /* Connect using Windows Authentication */       
        $conn = sqlsrv_connect($serverName, $connectionOptions);

        /* Check whether connnection is established */
        if($conn === false)
        {
            die(print_r(sqlsrv_errors(), true));
        }

        /* SQL query */
        $tsql = ("SELECT TOP 10 gps_lat
                ,gps_long
                FROM location");

        $result = sqlsrv_query($conn,$tsql);

        if( $result === false)
        {
            echo "Error in query preparation/execution.\n";
            die( print_r( sqlsrv_errors(), true));
        }

/*
BELOW IS THE ADJUSTED WHILE LOOP
*/
while($row = sqlsrv_fetch_array( $result )) {
    $lat = $row['gps_lat'];
    $long = $row['gps_long'];

        ?>      
        var marker = createMarker(  
        new GLatLng(<?php echo $Lat.','.$Long;?>)
        );
        map.addOverlay(marker);
        <?php } ?>
      }
    }
    //]]>
    </script>

Я думал, что это будет довольно просто, но я не могу разобраться с этим. Если есть какая-то информация, которая неясна ...

1 Ответ

0 голосов
/ 29 апреля 2011

Мне удалось решить проблему в конце концов, работая всю ночь, пробуя разные вещи ... Код для получения значений следующий:

    $lat=array();
    $long=array();
    while($points = sqlsrv_fetch_array($result)) {
    $lat[] = $points['gps_lat'];
    $long[] = $points['gps_long'];
    }


    $latLongSize = sizeof($lat)-1;

for($i=0; $i<=$latLongSize; $i++){ ?>

    var marker<?php echo $i; ?> = createMarker(new GLatLng(<?php echo $lat[$i];?>, <?php echo $long[$i]; ?>));  
        map.addOverlay(marker<?php echo $i; ?>);
...