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; } }