2012-04-30 22 views
0

私はGoogleマップapi v3コードで作業しています。2次元配列を使用してMySQLからデータを取得する

私はすべてのマーカをMySQLに保存しました。これらのマーカを取得して地図上に表示したいと考えています。私はこれを行うためのコードを探していたが、すべてのコードが取得したデータを保存するためにXMLファイルを使用していたことがわかった。別の考え方で、私はMySQLからデータを取得し、2次元配列で保存することができます。

これは悪い考えであり、私のウェブサイトをより遅くするだろうかと思いますか?

これらの私のコードからいくつかの部品:

(markersDAO.java)

String searchQuery = "select * from map"; 
    try 
     { 
      //connect to DB 
      currentCon = ConnectionManager.getConnection(); 
      stmt=currentCon.createStatement(); 
      rs = stmt.executeQuery(searchQuery);    
      int i=0; 
      // if user does not exist set userExits to false 
      while (rs.next()){ 
       m[i][0]=rs.getString(1); 
       m[i][1]=Double.toString(rs.getDouble(2)); 
       m[i][2]=Double.toString(rs.getDouble(3)); 
       i++; 
      }    
     } 
    catch (Exception ex) 
     { 
      System.out.println("Datamap failed 2: An Exception has occurred! " + ex); 
     } 

return m; 

(googlemap.jsp)

<% markersDAO u= new markersDAO(); 
      String[][] locations= u.dataMap();%> 

    <script type="text/javascript"> 

    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 10, 
     center: new google.maps.LatLng(-33.92, 151.25), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    var marker; 
    var f=0; 

    var myOptions= { 

      disableAutoPan: false 
            ,maxWidth: "auto" 
      ,pixelOffset: new google.maps.Size(0, 0) 
            ,zIndex: null 
            ,infoBoxClearance: new google.maps.Size(1, 1) 
            ,isHidden: false 
            ,pane: "floatPane" 
            ,enableEventPropagation: false 
    }; 
    <%for (int i = 0; i < locations.length; i++) { %> 

    marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(<%=locations[i][1]%>, <%=locations[i][2]%>), 
    map: map, 
    }); 
    var infobox = new InfoBox(myOptions); 

    google.maps.event.addListener(marker, 'mouseover', (function(marker,f) { 
    return function() {  
     infobox.setContent('<%=locations[i][0]%>'); 
     infobox.open(map, marker);    
    } 
    f++; 
    })(marker, f)); 

    <% } %> 
    </script> 

答えて

0

私はあなたのアイデアがうまく機能できると思い、私が行うことは、すべてのマーカー情報を含むJSONArrayを生成し、そのデータをJavascript関数から読み取って、マーカー上にマーカーを作成した後に、JSONオブジェクトのデータを保存することです彼はマップして、私がしたことは200のマーカーで速く働いています。

function displayLocation(location){ 
    var latLng = new google.maps.LatLng(parseFloat(location.latitud), parseFloat(location.longitud)); 
    var marker = new google.maps.Marker({ 
     position: latLng, 
     map: map, 
     icon: imagen, 
     draggable: false, 
     visible: true, 
     title: location.nombreequipo 
    }); 
} 
:JSON

var data = JSON.parse(response); 
for (var i=0; i<data.length; i++) { 
    displayLocation(data[i]); 
} 

そして、表示位置の機能を解析

JSONArray ajson = new JSONArray(); 
while(rset.next()){ 
    JSONObject json = new JSONObject(); 
    json.put("id_coord", rset.getString("IDCOORD")); 
    json.put("nombreequipo", rset.getString("MarkerName")); 
    json.put("lat", rset.getDouble(5)); 
    json.put("long", rset.getDouble(6)); 
    ajson.put(json); 
} 

JavaScriptを:あなたにいくつかのdiferentのアイデアを与えることができる いくつかのコード

関連する問題