2013-04-26 3 views
0
var classBounds = new google.maps.LatLngBounds(); 
var query = ""; 

query = "SELECT 'ROAD_NUMBER', 'geometry' FROM [TABLE_ID HERE] WHERE 'ROAD_NUMBER' CONTAINS IGNORING CASE '" + searchString + "' AND 'LINK_NUMBER' CONTAINS '" +searchStringLinkNo + "'"; 
var encodedQuery = encodeURIComponent(query); 

// Construct the URL 
var url = ['https://www.googleapis.com/fusiontables/v1/query']; 
url.push('?sql=' + encodedQuery); 
url.push('&key=[key]'); 
url.push('&callback=?'); 


// Send the JSONP request using jQuery 
$.ajax({ 
    url: url.join(''), 
    dataType: 'jsonp', 
    success: function (data){ 

     var rows = data['rows']; 

     if(rows){ 

      var classRoadGeo1  = rows[0][1].geometry.coordinates; 
      var classRoadGeo2  = rows[rows.length - 1][1].geometry.coordinates; 
      var classRoadGeoStart = classRoadGeo1[0]; 
      var classRoadGeoEnd  = classRoadGeo2[classRoadGeo2.length - 1]; 

      var startHolder = classRoadGeoStart.toString(); 
      var endHolder = classRoadGeoEnd.toString(); 

      var bound1 = startHolder.split(","); 
      var bound2 = endHolder.split(","); 

      var coordinate1 = new google.maps.LatLng(bound1[1], bound1[0]); 
      var coordinate2 = new google.maps.LatLng(bound2[1], bound2[0]); 

      alert(bound1); 
      alert(bound2); 

      classBounds.extend(coordinate1); 
      classBounds.extend(coordinate2);     

     } 
     else{ 

      alert("Unable to locate any counter/classifier stations for the current selection."); 
     } 
    } 
}); 

map.fitBounds(classBounds); 

}fitBounds и продлить - показ на совершенно другом месте

Весь код находится выше. Я извлек геометрию из таблицы слияния, преобразовал ее обратно в строку и сделал из нее объект LatLng. Однако, когда я запускаю fitBounds, он берет меня в Papa New Guinea, когда координаты на самом деле для Kiama в Сиднее, Австралия. У меня нет ошибок. Любые идеи о том, что может быть неправильным?

ответ

0

Запрос ajax является асинхронным, поэтому, когда вызывается map.fitBounds(), границы havent еще не были расширены. Поместите последнюю строку «map.fitBounds (classBounds)»; в конце вашего предложения if внутри функции успеха, и он должен работать нормально.