2016-10-09 2 views
0

여기에 코드가 있습니다. 데이터베이스에서 위도와 경도를 가져 왔지만 Google Javascript Maps API를 작성하여지도에서 빨간색 원을 만들 수는 없습니다. Js 객체에는 몇 가지 문제가 있다고 생각합니다.Google에 PHP 배열을 전달하는 방법 JavaScript Map API는 라벨을 만드시겠습니까?

<?php 
    error_reporting(0); 
    $db = new mysqli("localhost", "root", "", "app"); 
    if ($db->connect_errno) { 
     die("<center>Sorry, please check your network connection!</center>"); 
    } 

    $longiArray = array(); 
    $latitArray = array(); 
    $num  = 0; 

    $longitude = $db->query("SELECT * FROM water"); 
    $longitude->num_rows; 

    while ($row = $longitude->fetch_object()) { 
     $longiArray[$num] = $row->longi; 
     $latitArray[$num] = $row->latit; 
     $num++; 
    } 
    ?> 
    <!DOCTYPE html> 
    <html> 
     <head> 
      <meta content="initial-scale=1.0, user-scalable=no" name="viewport"> 
       <meta charset="utf-8"> 
        <title> 
         Circles 
        </title> 
        <style> 
         html, body { 
      height: 100%; 
      margin: 0; 
      padding: 0; 
      } 
      #map { 
      height: 100%; 
      } 
        </style> 
       </meta> 
      </meta> 
     </head> 
     <body> 
      <div id="map"> 
      </div> 
      <script> 

    var city = new Array(); 
    var counter = <?php echo"$num";?>; 
    for (var x = 0; var x < counter; var x++){ 
     var citymap = { 
     city[x] = { 
      center: {lat: <?php echo"$latitArray[x]";?>, 
      lng: <?php echo"$longiArray[x]";?>}, 
      population: 10 
     }, 
     } 
    }; 

    function initMap() { 
     // Create the map. 
     var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 13, 
     center: {lat: -28.73226, lng: 24.76232}, 
     mapTypeId: google.maps.MapTypeId.TERRAIN 
     }); 

    for (var city in citymap) { 

     var cityCircle = new google.maps.Circle({ 
     strokeColor: '#FF0000', 
     strokeOpacity: 0.8, 
     strokeWeight: 2, 
     fillColor: '#FF0000', 
     fillOpacity: 0.35, 
     map: map, 
     center: citymap[city].center, 
     radius: Math.sqrt(citymap[city].population) * 100 
     }); 
    } 



    } 
      </script> 
      <script async="" defer="" src="https://maps.googleapis.com/maps/api/js?key=Google API Key here &signed_in=true&callback=initMap"> 
      </script> 
     </body> 
    </html> 
+0

내가지도 API 사이트에서 일부 코드 변경 : 우리는 각 도시에 대한 키를 가지고, 각 도시 (예를 들어 '시카고', '밴쿠버'등)에 대한 레이블을 위해 필요 . 이제는 작동하지 않습니다. - – 879099766

+0

PHP에서 생성 된 HTML/javascript는 어떤 모습입니까? – geocodezip

+0

아무 것도 생성하지 않았습니다. – 879099766

답변

0

수정의 몇 :

  1. 메타 태그 자동 폐쇄, 그래서 그들이 </meta> 필요하지 않습니다. 자세한 내용은 MDN을 참조하십시오.
  2. 는 구글지도에 대한 키를 얻을 - 그래서 Google Maps documentation for this

    이 참조 :
    <script async defer src="https://maps.googleapis.com/maps/api/js?key=asdf23f2...23f&callback=initMap" type="text/javascript"></script>

  3. 가 PHP를 사용하고 json_encode이 아래 예 참조 자바 스크립트 변수 citymap 생성 : <script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" type="text/javascript"></script>
    뭔가처럼 될 것이다. 각 데이터베이스 레코드에 name 열이 있습니까?
$longitude = $db->query("SELECT * FROM water"); 
//$longitude->num_rows;//what is the point of this line? 
$cityMap = array(); 
while ($row = $longitude->fetch_object()) { 
    //presuming we have a name column - otherwise assign from another source (e.g. array of cities) 
    $cityMap[$row->name] = array(
    'center' => array(
     'lng' => $row->longi, 
     'lat' => $row->latit 
    ), 
    'population' => 10 
); 
?> 
<!-- in the html body .... --> 

<script> 

var citymap = <? echo json_encode($cityMap); ?>; 

function initMap() { 
+0

1) 고마워, 이해해. 2) 나는이 질문을 게시 할 때 KEY를 제거합니다. 3) 도시 이름 ("db"는 "도시"라고 함)이있는 열이 있으므로 매번 도시 이름이 달라야합니까? (db에서, 그것은 같은 도시입니다). json_encode ($ cityMap), $ cityMap PHP에서 배열, 전체 PHP 배열을 Js 배열로 인코딩합니까? – 879099766

+0

변경했지만 Google지도가 생성되지 않았습니다. connect_errno) { die ("

죄송합니다, 네트워크 연결을 확인하십시오!
"); } $ select = $ db-> query ("SELECT * FROM water"); $ select-> num_rows; $ cityMap = array(); 동안 ($ 행 = $ Select 포함> fetch_object()) {$ cityMap [$ 로우 ->시] = 배열 ​​( '중심'=> 어레이 ( 'LNG'=> $ 로우 -> longi, 'lat'=> $ row-> latit, ), 'population'=> 10, ); } ?> – 879099766

+0

예 [php.net] (http://php.net/array)에 따라 배열 키가 고유해야합니다. 배열 선언의 여러 요소가 동일한 키를 사용하면 마지막 요소 만 다른 모든 것이 겹쳐 쓰여지는 것처럼 사용하십시오 .' 그래서 당신은'num' 값을 각 도시에 추가 할 수 있습니다 : 예를 들어'$ citymap [$ row-> city. $ num ++] = array ('center'...' –

-1

오류는 javascript의 cityArray에서입니다. 울부 짖는 소리처럼 수정 :

<?php 
echo "var city = new Array();"; 
echo "var counter = $num"; 
for($x=0 ; $x<$num ; $x++){ 
     echo "var citymap = {". 
     "city[x] = {". 
      "center: {lat: $latitArray[$x] ,". 
      "lng: $longiArray[$x] }, ". 
      "population: 10". 
     "},". 
     "}"; 
} 
?> 
+0

그러면 각 반복마다 'var citymap'이 다시 선언되므로 위도 및 경도 배열의 마지막 값만 포함됩니다. 또한 'city [x]'의 'x'에는 값이 없지만, 그 전에는 'var x'가 없기 때문에 ... –

+0

흠 ... 시도했지만 아무 것도 생성하지 않았습니다. – 879099766

관련 문제