itsmo.spot_range = {};
//条件
itsmo.vars.g_spot_range_request = null;
//表示
itsmo.vars.g_range_bus_request = null; // バス停リスト保持用
itsmo.vars.g_range_spots = {}; // 施設情報格納
itsmo.vars.g_range_spots_uid = '';
itsmo.vars.g_range_spots_drawin = false;
// 初期化
itsmo.spot_range.init = function() {
$('#flg_freewd').keypress(function(e) {
if (13 == e.which) {
itsmo.range.cond_submit();
}
});
};
// 施設詳細/駅詳細から遷移時
itsmo.spot_range.detail_spot = function(uid, nm, action) {
itsmo.sub.map_tab_change('range', ['spotDetail', uid, nm, action]);
var prm = 'mode=detail_spot';
prm += '&uid=' + encodeURIComponent(uid);
prm += '&nm=' + encodeURIComponent(nm);
prm += '&action=' + encodeURIComponent(action);
if (itsmo.spot_range.checkIsNoSpon()) {
prm += '&nospon=1';
}
itsmo.lib.map_waitopen();
if(itsmo.vars.g_spot_range_request != null) itsmo.lib.XMLHttpRequest2_abort(itsmo.vars.g_spot_range_request);
itsmo.vars.g_spot_range_request = itsmo.lib.XMLHttpRequest2_send('/map/ajax_spot_range.php',itsmo.spot_range.detail_spot_result,'GET',prm);
return false;
};
itsmo.spot_range.detail_spot_result = function(result) {
//if( typeof( result.responseXML.normalize ) != 'undefined') result.responseXML.normalize();// FFの4096byte制限対策
// エラー処理
result = $(result);
var err = result.find('err').text();
if(err != 0) {
//alert('エラー '+err);
return;
}
//チップクリア
itsmo.sub.map_clickable_TipAllClear(1);
var uid = '';
var set_tip = function() {
var prm = {};
prm['uid'] = $(this).find('uid').text();
prm['lat'] = $(this).find('lat').text();
prm['lon'] = $(this).find('lon').text();
prm['nm'] = $(this).find('nm').text();
prm['short_nm'] = $(this).find('short_nm').text();
prm['gnr_nm'] = $(this).find('gnr_nm').text();
prm['gnr_cd'] = $(this).find('gnr_cd').text();
prm['tip_c'] = $(this).find('tip_c').text();
prm['tip_o'] = $(this).find('tip_o').text();
prm.tooltipOffsetBottomCenter = [ 14, 0 ];
itsmo.vars.g_range_spots[prm['uid']] = prm;
itsmo.vars.g_range_spots_uid = prm['uid'];
itsmo.vars.g_map_setcursor_lat = prm['lat'];
itsmo.vars.g_map_setcursor_lon = prm['lon'];
itsmo.vars.g_map_setcursor_icon = 'link02';
// 小吹き出し作成
var html = prm['tip_c'];
var div_id = itsmo.sub.set_tooltip_opt_s(html, prm);
// bind
$('#' + div_id + ' a').click(function() {
itsmo.spot_range.range_move(prm['lat'], prm['lon']);
itsmo.spot_range.range_tipopen(prm['uid']);
});
uid = prm['uid'];
};
result.find('spot').each(set_tip);
itsmo.spot_range.range_tipopen(uid);
itsmo.lib.map_waitclose();
itsmo.vars.g_spot_range_request = null;
// バス停取得
// itsmo.spot_range.get_range_bus();
itsmo.sub.map_tab_sethtml( result.find('left_html').text() );
};
// 周辺のバス停取得(施設詳細から遷移時)
//itsmo.spot_range.get_range_bus = function() {
// var data = itsmo.vars.g_range_spots[itsmo.vars.g_range_spots_uid];
// var prm = 'mode=range_busstop';
// prm += '&lat=' + data.lat;
// prm += '&lon=' + data.lon;
// itsmo.lib.map_waitopen();
// itsmo.lib.XMLHttpRequest2_send('/map/ajax_spot_range.php',itsmo.spot_range.get_range_bus_result,'GET',prm);
// return false;
//};
//itsmo.spot_range.get_range_bus_result = function(result) {
//
// // エラー処理
// result = $(result);
// var err = result.find('err').text();
// if(err != 0) {
// //alert('エラー '+err);
// return;
// }
//
// if(result.find('cnt').text() == 0) {
// itsmo.lib.map_waitclose();
// return;
// }
//
// var data = itsmo.vars.g_range_spots[itsmo.vars.g_range_spots_uid];
//
// // バス停一覧表示
// $('#busstop').html( result.find('left_html').text() );
// var elem = $('#busstop');
//
// // TIPS作成
// result.find('bus').each(function() {
// // リスト保持
// buslist = function(){};
// buslist.nm = $(this).find('nm').text();
// buslist.slat = $(this).find('lat').text();
// buslist.slon = $(this).find('lon').text();
//
// var set_tip = function() {
// var lines = {};
// lines['lnm'] = $(this).find('lnm').text();
// lines['lcd'] = $(this).find('lcd').text();
// lines['lineno'] = $(this).find('lineno').text();
// lines['vec'] = $(this).find('vec').text();
// lines['lat'] = $(this).find('veclat').text();
// lines['lon'] = $(this).find('veclon').text();
// lines['tip_c'] = $(this).find('tip_c').text();
// lines['tip_o'] = $(this).find('tip_o').text();
// lines['uid'] = lines['lcd'] + lines['lineno'];
// lines.tooltipOffsetBottomCenter = [ 14, 5 ];
//
// var distance = itsmo.lib.getDistance2(data.lat, data.lon, lines['lat'], lines['lon']);
// if (distance > 1000) {
// distance = (distance / 1000);
// distance = distance.toFixed(1) + 'km';
// } else {
// distance = distance.toFixed(0) + 'm';
// }
// // 距離表示
// elem.find('#' + lines['uid']).html('(' + distance + ')');
//
// // 小吹き出し作成(周辺用ミニアイコン)
// var html = lines['tip_c'];
// var div_id = itsmo.sub.set_tooltip_around(html, lines);
//
// // bind
// $('#' + div_id + ' a').click(function() {
// itsmo.spot_range.range_move(lines['lat'], lines['lon']);
// itsmo.spot_range.range_tipopen(lines['uid']);
// });
//
// };
//
// $(this).find('line').each(set_tip);
// });
//
//
// itsmo.lib.map_waitclose();
//
// // 縮尺変更
// itsmo.spot_range.getSpotShowRange();
//};
// 施設のジャンルで周辺検索
itsmo.spot_range.genre_range_search = function(all_gnrcd) {
itsmo.vars.g_range_genre = all_gnrcd;
itsmo.vars.g_range_flags = 'gsort=near';
// 周辺検索
itsmo.range.range_search('genre');
};
// 住所から遷移時、住所フリーワード検索実行時
itsmo.spot_range.detail_addr = function(path, adcd) {
itsmo.sub.map_tab_change('addrlist', 1, ['addrDetail', path, adcd]);
var prm = 'mode=detail_addr';
prm += '&path=' + encodeURIComponent(path);
if (adcd) prm += '&adcd=' + encodeURIComponent(adcd);
if (itsmo.spot_range.checkIsNoSpon()) {
prm += '&nospon=1';
}
itsmo.lib.map_waitopen();
if(itsmo.vars.g_spot_range_request != null) itsmo.lib.XMLHttpRequest2_abort(itsmo.vars.g_spot_range_request);
itsmo.vars.g_spot_range_request = itsmo.lib.XMLHttpRequest2_send('/map/ajax_spot_range.php',itsmo.spot_range.detail_addr_result,'GET',prm);
return false;
};
itsmo.spot_range.detail_addr_result = function(result) {
//if( typeof( result.responseXML.normalize ) != 'undefined') result.responseXML.normalize();// FFの4096byte制限対策
// エラー処理
result = $(result);
var err = result.find('err').text();
if(err != 0) {
//alert('エラー '+err);
return;
}
// 最適化用変数初期化
itsmo.spot_range.spots_init();
//チップクリア
itsmo.sub.map_clickable_TipAllClear(1);
var uid = '';
var set_tip = function() {
var prm = {};
prm['lat'] = $(this).find('lat').text();
prm['lon'] = $(this).find('lon').text();
prm['nm'] = $(this).find('nm').text();
prm['adcd'] = $(this).find('adcd').text();
prm['adcdupp'] = $(this).find('adcdupp').text();
prm['tip_c'] = $(this).find('tip_c').text();
prm['tip_o'] = $(this).find('tip_o').text();
prm['uid'] = $(this).find('uid').text();
prm.tooltipOffsetBottomCenter = [ 14, 0 ];
itsmo.vars.g_range_spots[prm['uid']] = prm;
itsmo.vars.g_range_spots_uid = prm['uid'];
itsmo.vars.g_map_setcursor_lat = prm['lat'];
itsmo.vars.g_map_setcursor_lon = prm['lon'];
itsmo.vars.g_map_setcursor_icon = 'link02';
// 小吹き出し作成
var html = prm['tip_c'];
var div_id = itsmo.sub.set_tooltip_opt_s(html, prm);
// フリーワード内容変更
$('#freewd').val(prm['nm']);
// bind
$('#' + div_id + ' a').click(function() {
itsmo.spot_range.range_move(prm['lat'], prm['lon']);
itsmo.spot_range.range_tipopen(prm['uid']);
});
uid = prm['uid'];
};
result.find('addr_data').each(set_tip);
itsmo.spot_range.range_tipopen(uid);
itsmo.lib.map_waitclose();
itsmo.vars.g_spot_range_request = null;
// 住所周辺施設取得
itsmo.spot_range.detail_addr_range_top();
// 左メニューに設定
itsmo.sub.map_tab_sethtml( result.find('left_html').text() );
// ジャンル再検索リンク設定
itsmo.sub.set_genre_research();
// 絞込から検索時、絞込情報取得
if (itsmo.vars.g_range_spots_drawin && $('#drawin_next').css('display') !== 'undefined') {
itsmo.spot_range.addr_list($(result).find('addr_data').find('adcd').text(), 0);
}
};
// 住所周辺施設or人気施設取得(TOP)
itsmo.spot_range.detail_addr_range_top = function(word) {
var data = itsmo.vars.g_range_spots[itsmo.vars.g_range_spots_uid];
var prm = 'mode=detail_addr_range';
if (word) {
prm += '&nm=' + encodeURIComponent(word);
} else {
prm += '&nm=' + encodeURIComponent(data.nm);
}
if (itsmo.spot_range.checkIsNoSpon()) {
prm += '&nospon=1';
}
prm += '&adcd=' + encodeURIComponent(data.adcd);
prm += '&adcdupp=' + encodeURIComponent(data.adcdupp);
prm += '&lat=' + encodeURIComponent(data.lat);
prm += '&lon=' + encodeURIComponent(data.lon);
itsmo.lib.map_waitopen();
itsmo.lib.XMLHttpRequest2_send('/map/ajax_spot_range.php',itsmo.spot_range.detail_addr_range_result,'GET',prm);
return false;
};
// 住所周辺施設取得(続き10件)
itsmo.spot_range.detail_addr_range_page = function(page) {
var data = itsmo.vars.g_range_spots[itsmo.vars.g_range_spots_uid];
var prm = 'mode=detail_addr_range_page';
prm += '&nm=' + encodeURIComponent(data.nm);
prm += '&page=' + encodeURIComponent(page);
if (itsmo.spot_range.checkIsNoSpon()) {
prm += '&nospon=1';
}
itsmo.lib.map_waitopen();
itsmo.lib.XMLHttpRequest2_send('/map/ajax_spot_range.php',itsmo.spot_range.detail_addr_range_result,'GET',prm);
return false;
};
itsmo.spot_range.detail_addr_range_result = function(result) {
//if( typeof( result.responseXML.normalize ) != 'undefined') result.responseXML.normalize();// FFの4096byte制限対策
// エラー処理
result = $(result);
var err = result.find('err').text();
if(err != 0) {
//alert('エラー '+err);
return;
}
var spots_cnt = result.find('spots_hitCount').text();
if (spots_cnt > 0 && result.find('favorites').text() == '') {
if (result.find('addr_data').text() != '') {
// 吹き出しにビル名表示(チップ再設定)
//チップクリア
itsmo.sub.map_clickable_TipAllClear();
var uid = '';
var set_tip = function() {
var prm = {};
prm['lat'] = $(this).find('lat').text();
prm['lon'] = $(this).find('lon').text();
prm['nm'] = $(this).find('nm').text();
prm['adcd'] = $(this).find('adcd').text();
prm['tip_c'] = $(this).find('tip_c').text();
prm['tip_o'] = $(this).find('tip_o').text();
prm['uid'] = $(this).find('uid').text();
prm.tooltipOffsetBottomCenter = [ 14, 0 ];
itsmo.vars.g_range_spots[prm['uid']] = prm;
// 小吹き出し作成
var html = prm['tip_c'];
var div_id = itsmo.sub.set_tooltip_opt_s(html, prm);
// bind
$('#' + div_id + ' a').click(function() {
itsmo.spot_range.range_move(prm['lat'], prm['lon']);
itsmo.spot_range.range_tipopen(prm['uid']);
});
uid = prm['uid'];
};
result.find('addr_data').each(set_tip);
// 中吹き出し
itsmo.spot_range.range_tipopen(uid);
}
// 周辺施設一覧表示
$('#range_spot_list').html( result.find('left_html').text() );
if (result.find('page_data').text()) {
if ($('#main_spot').css('display') != 'none') $('#main_spot').css('display', 'none');
$('#range_spot_kaipage').html('');
$('#range_spot_kaipage').append($('#range_spot_list').find('.map-left-kaipage'));
// 左メニューリサイズ
itsmo.map.setLeftContentSize();
}
} else {
// 人気施設表示
itsmo.spot_range.detail_addr_favorite(result);
}
// 縮尺変更
itsmo.spot_range.getSpotShowRange();
itsmo.lib.map_waitclose();
};
// 人気施設表示
itsmo.spot_range.detail_addr_favorite = function(result) {
var data = itsmo.vars.g_range_spots[itsmo.vars.g_range_spots_uid];
var elem = $('#range_spot_list');
// TIPS作成
var set_tip = function() {
var favorite = {};
favorite['uid'] = $(this).find('uid').text();
favorite['lat'] = $(this).find('lat').text();
favorite['lon'] = $(this).find('lon').text();
favorite['tip_c'] = $(this).find('tip_c').text();
favorite['tip_o'] = $(this).find('tip_o').text();
favorite.tooltipOffsetBottomCenter = [ 14, 5 ];
var distance = itsmo.lib.getDistance2(data.lat, data.lon, favorite['lat'], favorite['lon']);
if (distance > 1000) {
distance = (distance / 1000);
distance = distance.toFixed(1) + 'km';
} else {
distance = distance.toFixed(0) + 'm';
}
// 距離表示
elem.find('#' + favorite['uid']).html('(' + distance + ')');
itsmo.vars.g_range_spots[favorite['uid']] = favorite;
// 小吹き出し作成(周辺用ミニアイコン)
var html = favorite['tip_c'];
var div_id = itsmo.sub.set_tooltip_around(html, favorite);
// bind
$('#' + div_id + ' a').click(function() {
itsmo.spot_range.range_move(favorite['lat'], favorite['lon']);
itsmo.spot_range.range_tipopen(favorite['uid']);
});
};
result.find('favorites').each(set_tip);
$('#range_spot_list').html( result.find('left_html').text() );
};
// 住所絞込一覧取得
itsmo.spot_range.addr_list = function(adcd, page) {
// itsmo.sub.map_tab_change('addrlist');
var prm = 'mode=addr_list';
prm += '&adcd=' + adcd;
if (page) prm += '&page=' + page;
itsmo.lib.map_waitopen();
// if(itsmo.vars.g_spot_range_request != null) itsmo.lib.XMLHttpRequest2_abort(itsmo.vars.g_spot_range_request);
// itsmo.vars.g_spot_range_request = itsmo.lib.XMLHttpRequest2_send('/map/ajax_spot_range.php',itsmo.spot_range.detail_addr_result,'GET',prm);
itsmo.lib.XMLHttpRequest2_send('/map/ajax_spot_range.php',itsmo.spot_range.addr_list_result,'GET',prm);
return false;
};
itsmo.spot_range.addr_list_result = function(result) {
//if( typeof( result.responseXML.normalize ) != 'undefined') result.responseXML.normalize();// FFの4096byte制限対策
// エラー処理
result = $(result);
var err = result.find('err').text();
if(err != 0) {
//alert('エラー '+err);
return;
}
// 住所一覧表示
$('#select_addrlist').html( result.find('left_html').text() );
itsmo.lib.map_waitclose();
// 絞込リンク非表示
if (itsmo.vars.g_range_spots_drawin) itsmo.spot_range.drawin_hide();
// トップ一覧以外非表示
var top = $('.bNavArea div[id^=kanaindex_]:first').attr('id');
if (top) $('.bNavArea div[id!=' + top + ']').hide();
// 左表示エリアリサイズ
itsmo.map.setLeftContentSize();
};
// 住所絞込かな切り替え
itsmo.spot_range.change_area = function(elem, nm) {
elem = $(elem);
var id = elem.parent().attr('id');
elem = elem.parent().parent();
var act_id = '';
elem.find('li').each(function(i, e) {
e = $(e);
if (e.hasClass('act')) {
act_id = e.attr('id');
return;
}
});
var moji = elem.find('#' + act_id).text();
var str = '' + moji + '';
elem.find('#' + act_id).removeClass('act').html(str);
moji = elem.find('#' + id).text();
elem.find('#' + id).addClass('act').html(moji + '
');
$('div[id^=' + nm + ']').hide();
if (nm == 'kanaindex_') {
$('#' + nm + id + '_1').show();
} else {
$('#' + nm + id).show();
}
// 左表示エリアリサイズ
itsmo.map.setLeftContentSize();
return false;
};
// 住所絞込かなページ切り替え
itsmo.spot_range.change_area_page = function(nm, page) {
$('div[id^=' + nm + ']').hide();
$('#' + nm + '_' + page).show();
return false;
};
// 住所絞込一覧閉じる
itsmo.spot_range.area_close = function() {
$('#select_addrlist').html('');
$('#drawin_next').show();
$('#drawin_next_arrow').show();
itsmo.vars.g_range_spots_drawin = false;
// 左表示エリアリサイズ
itsmo.map.setLeftContentSize();
};
// 住所絞込リンク非表示
itsmo.spot_range.drawin_hide = function() {
itsmo.vars.g_range_spots_drawin = true;
$('#drawin_next').hide();
$('#drawin_next_arrow').hide();
};
// 初期化
itsmo.spot_range.spots_init = function() {
itsmo.vars.g_range_spots_uid = '';
itsmo.vars.g_range_spots = {};
};
//--------------------------------------------------------------------------------------------------
// 移動
//--------------------------------------------------------------------------------------------------
itsmo.spot_range.range_move = function(lat, lon) {
itsmo.vars.g_range_cancel = 1;
itsmo.vars.g_map_obj.moveLatLon(itsmo.lib.toLatLon(lat, lon));
}
// ツールチップオープン
itsmo.spot_range.range_tipopen = function(uid) {
if(uid == null || uid == ''){ return false;}
var data = itsmo.vars.g_map_tipid_clickable_s[uid];
var div_id = itsmo.sub.map_clickable_tipopen_opt(data.tip_o, data, data.tip_id);
};
// スポットを地図内に収めるよう縮尺変更
itsmo.spot_range.getSpotShowRange = function() {
// 地図の移動
var data = itsmo.vars.g_range_spots[itsmo.vars.g_range_spots_uid];
// 全スポットを地図内に収める
var latlons = [];
$.each(itsmo.vars.g_range_spots, function(id, v) {
var item = itsmo.vars.g_range_spots[id];
latlons.push(itsmo.lib.toLatLon(item.lat, item.lon));
});
// 地図の中心に移動
itsmo.vars.g_map_obj.moveLatLon(itsmo.lib.toLatLon(data.lat, data.lon));
// 地図四隅緯度経度に最適な縮尺レベルを取得
var sc = itsmo.vars.g_map_obj.getAdjustZoom(latlons, true);
if (sc > itsmo.vars.g_map_obj.getZoom()) {
itsmo.vars.g_map_obj.setZoom(sc.zoom);
}
};
// Check rule to display yahoo ad
itsmo.spot_range.checkIsNoSpon = function () {
var hash = window.location.hash;
if (hash.length > 0) {
hash = hash.substring(1);
hash = hash.split(',');
hash = hash.shift();
}
if (hash != 'freeword') {
return true;
}
}