2011-09-08 66 views
0

我有一個jQuery自動完成的UI元素,顯示列表的火車站。當用戶從自動完成列表中選擇一個電臺時,該功能應該從數據庫返回一組緯度/座標,並將地圖重新​​映射到這些座標上?google.maps.setCenter()緯度和經度請求通過jquery.ajax()

任何地方我在這段代碼中錯了代碼?

// make a json request to get the map data from the Map action 
$(function() {   
    $.getJSON("/Home/Map", initialise); 
}); 

var infowindow = new google.maps.InfoWindow({content: "EMPTY"}); 




function initialise(mapData) { 

var latlng = new google.maps.LatLng(54.466667, -3.233333); 

var myOptions = { 
    zoom: 5, 
    center: latlng, 
    mapTypeId: google.maps.MapTypeId.TERRAIN, 
    mapTypeControlOptions: { 

     style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR 
    }, 
    scaleControl: true, 
    streetViewControl: false 

}; 


var map = new google.maps.Map($("#map")[0], 
myOptions); 


    $.each(mapData, function (i, location) { 
     setupLocationMarker(map, location); 
    }); 

//Autocomplete 
$(function() { 
     $("#tags").autocomplete({ 
      source: "/Home/StationsList", 
      minLength: 2, 
      select: function (event, ui) { 
       jQuery.ajax({ 
        url: "Home/GetStationLatLong/" + ui.item.value, 
        dataType: "json", 
        success: function (data) { 
         map.setCenter(new google.maps.latLng(data.latitude, data.longitude)); 
        }      
       }); 
      } 
     }); 

    }); 

} 

function setupLocationMarker(map, location) { 

var latlng = new google.maps.LatLng(location.Latitude, location.Longitude); 

var marker = new google.maps.Marker({ 
    position: latlng, 
    map: map, 
    title: location.Name 

}); 

google.maps.event.addListener(marker, 'click', function() { 
    infowindow.setContent('<h2>' + location.Name + '</h2>'); 

    infowindow.open(map, marker); 


    $("#info").text(location.Name); 
});  

} 

從 「家庭/ GetStationLatLong」 請求的服務器的JSON返回的是這樣的

[{"latitude":53.66314,"longitude":-1.48149}] 

回答

5

試試

map.setCenter(new google.maps.LatLng(data[0].latitude, data[0].longitude)); 
+0

乾杯,使[0]使喬治的答案工作。 Upvoted – MrBliz

+0

現在,您標記爲正確的答案,因爲我首先要求setCenter – MrBliz

0

成功函數應該是這樣的:

success: function(data) { 
    google.maps.setCenter(new google.maps.latLng(data.latitude, data.longitude)); 
} 
+0

謝謝,但是這並沒有解決問題。 – MrBliz

2

也許你找這個

success: function (data){ 
    //map.setCenter(new google.maps.latLng(coordinates[0].latitude, data.longitude)); 
    var coordinates = $.parseJON(data); 
    map.panTo(new google.maps.LatLng(coordinates[0].latitude, coordinates[0].longitude)); 
} 
+0

是的,我是。一開始沒有工作,但通過添加數據[0] .latitude,data [0] .longitude按照bsrykt的說法,下面說它使它正常工作 – MrBliz

+0

其實我更喜歡setCenter爲我的用例,所以我已經標記爲bsrykt爲正確的答案,但謝謝你讓我走在正確的道路上。 Upvoted。 – MrBliz

+0

別擔心:)。沒關係 – Jorge