0

私のサイトには、次のコードのコピーが約 15 個あります。変更されるのは、URL、経度、緯度、およびマーカー変数のタイトルだけです。これを切り刻んで繰り返しを減らすにはどうすればよいですか?

$.ajax({
    url: "http://api.wunderground.com/api/<api_key>/conditions/q/pws:KCASANFR128.json",
    dataType: "jsonp",
    success: function(parsed_json) {
    var location = parsed_json['current_observation']['observation_location']['city'];
    var temp_f = parsed_json['current_observation']['temp_f'];
    var weather = parsed_json['current_observation']['weather'].toLowerCase();
    var iconUrl = parsed_json['current_observation']['icon_url'];
    var iconPic = new MyIcon(iconUrl);
    var markerRichmond = new L.Marker(new L.LatLng(37.779806, -122.471895), {icon: iconPic});
    markerRichmond.bindPopup("Current temperature in " +location+ " is: " +temp_f+ " and it is " + weather);
    map.addLayer(markerRichmond);
}});
4

2 に答える 2

1

これらの変数を取り込んで ajax 呼び出しに渡す関数を作成できます。getWeatherそうすれば、この ajax ブロックのコピーが 1 つだけ必要になります。これは、関数を呼び出すことで呼び出すことができます。

function getWeather(url, lat, long, title){
    $.ajax({
        url: url,
        dataType: "jsonp",
        success: function(parsed_json) {
            var location = parsed_json['current_observation']['observation_location']['city'];
            var temp_f = parsed_json['current_observation']['temp_f'];
            var weather = parsed_json['current_observation']['weather'].toLowerCase();
            var iconUrl = parsed_json['current_observation']['icon_url'];
            var iconPic = new MyIcon(iconUrl);
            var markerRichmond = new L.Marker(new L.LatLng(lat, long), {icon: iconPic});
            markerRichmond.bindPopup(title);
            map.addLayer(markerRichmond);
        }
    });
}

ここでタイトルを正しく処理したかどうかはわかりませんが、アイデアはわかります。タイトルがどのように変化するかを教えていただければ、それに応じてコードを修正できます。

お役に立てれば。

于 2012-06-07T17:16:12.307 に答える
0
var current_observation = parsed_json['current_observation'];

これにより、解析時間も短縮されます。次に、変数を次のように参照できます

current_observation['observation_location']['city'];
于 2014-11-04T17:16:14.303 に答える