2017-09-20 25 views
1

私は私のDBにあるlonとlat項目に基づいてGoogleマップの上にポリラインを作成するコードを使用しています。今はうまくいっています。私はそれをクリックして、そのポイントのDBレコードから時間、緯度および経度情報を見ることができるように、マップ上の線を構成する各位置のマーカーを追加したいと思います。データベースを使用すると、マップマーカーを作成するために、これらのを使用することができます保存された経度と緯度の座標を持っているのでGoogleマップの各場所の位置マーカーを設定する

<?php 

function flightpath($days = 1) { 



    if (($days > 100) || ($days < 1) || (!is_numeric($days))) { 
    echo 'Please specify a correct number of days (maximum 100 days)'; 
    return; 
    } 


    $flightpath_part[0] = "<script> 
     function initialize() { 
     var myLatLng = new google.maps.LatLng("; 

    $flightpath_part[1] = "); 
     var mapOptions = { 
      zoom: 11, 
      center: myLatLng, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 

     var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 

     var flightPlanCoordinates = [ 
"; 

    $flightpath_part[2] = " 
     ]; 
     var flightPath = new google.maps.Polyline({ 
      path: flightPlanCoordinates, 
      strokeColor: '#FF0000', 
      strokeOpacity: 1.0, 
      strokeWeight: 3 
     }); 

     flightPath.setMap(map); 
     } 

     google.maps.event.addDomListener(window, 'load', initialize); 

    </script> 
"; 



    $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); 
    if (mysqli_connect_errno()) { 
    echo 'Connection with MySQL database failed!'; 
    exit(); 
    } 
    $query = "SELECT `log`, `lat`, `lon` FROM `location` WHERE `log` >= (DATE_SUB(CURDATE(), INTERVAL " . ($days -1) . " DAY)) AND user_id = '$user_idA' ORDER BY `log` ASC"; 
    $result = mysqli_query($conn, $query); 
    $rowcount = mysqli_num_rows($result); 

    if ($rowcount == 0) { 
    echo "<br /><br /><br /><center><p>You have no locations in your database for this period!</p></center>"; 

    } else { 

    $lat_sum = 0; 
    $lon_sum = 0; 
    $loc_sum = 0; 
    $flightpath = ''; 


    while ($line = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 

     foreach ($line as $col_value) { 

      $lon = $line['lon']; 
      $lat = $line['lat']; 

     $lon_sum = $lon_sum + $lon; 
     $lat_sum = $lat_sum + $lat; 
     $loc_sum = $loc_sum + 1; 

      if ($lon && $lat) { 
       $flightpath .= "   new google.maps.LatLng("; 
       $flightpath .= $line['lat']; 
       $flightpath .= ", "; 
       $flightpath .= $line['lon']; 
       $flightpath .= "),\r\n"; 
      } 
     } 
    } 


    $lon_center = $lon_sum/$loc_sum; 
    $lat_center = $lat_sum/$loc_sum; 
    $flightpath = substr_replace($flightpath, "", -3); 


    $flightpath = $flightpath_part[0] . $lat_center . ', ' . $lon_center . $flightpath_part[1] . $flightpath . $flightpath_part[2];  
    } 


    mysqli_close($conn); 


    return $flightpath; 
} 

?> 

    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&amp;libraries=visualization"></script>  
    <?php echo flightpath($days); ?> 

答えて

0

:ここ

は、現在のコードです。私はそれをテストすることはできませんし、私は彼らが静的ので、彼らは本当に何もしていけない0に設定されている考慮varsの* _sumのポイントをわかりませんでした

function flightmarkers($days=1){ 
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); 
     if (mysqli_connect_errno()) { 
     echo 'Connection with MySQL database failed!'; 
     exit(); 
     } 
     $query = "SELECT `log`, `lat`, `lon` FROM `location` WHERE `log` >= (DATE_SUB(CURDATE(), INTERVAL " . ($days -1) . " DAY)) AND user_id = '$user_idA' ORDER BY `log` ASC"; 
     $result = mysqli_query($conn, $query); 
     $rowcount = mysqli_num_rows($result); 

     if ($rowcount == 0) { 
     echo "<br /><br /><br /><center><p>You have no locations in your database for this period!</p></center>"; 

     } else { 
     $flightmarkers= ''; 
     while ($line = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 
      foreach ($line as $col_value) { 
       $lon = $line['lon']; 
       $lat = $line['lat']; 
       if ($lon && $lat) { 
        $flightmarkers.= 
         'marker = new google.maps.Marker({ 
          position: new google.maps.LatLng('.$line['lat'].','.$line['lon'].'), 
          map: map 
          }); 
          '; 
       } 
     } 
     return $flightmarkers; 
    } 
<?php echo flightpath($days); ?> 
<?php echo flightmarkers($days); ?> 

:あなたのような何かを試みることができます。私は簡単にするためにそれらを削除しました。これは、少なくともあなたが正しい方向に始めることができるかもしれません。

このリンクは、マップマーカーについての情報もあります。Google Maps JS API v3 - Simple Multiple Marker Example

関連する問題