0

私はGoogleマップAPI v3コードに取り組んでいます。

すべてのマーカーを 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>
4

1 に答える 1

0

あなたのアイデアはうまくいくと思います。すべてのマーカー情報を含むJSONArrayを生成し、マップ上にマーカーを作成するためにJavascript関数からそのデータを読み取った後、JSONオブジェクトにデータを保存します。完了は、200 のマーカーで高速に動作しています。いくつかの異なるアイデアを与える可能性のあるコード:

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 で JSON を解析する

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

そして、表示位置機能:

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
    });
}
于 2012-04-30T09:32:25.103 に答える