/* js */ var map; var icon; var mflag = 1; var maxpoint = 50; var icon; var data; var markerlist = new Array(); var infowindowlist = new Array(); /*var category = new Array('種別を選択','すべて','アパート・マンション・戸建','オフィス・店舗'); var area = new Array('地域を選択','すべて','長野市北部(犀川以北)','長野市南部(犀川以南)','千曲市','長野県内その他'); var scale = new Array('間取りを選択','すべて','1R~1LDK','2DK~2LDK','3DK~3LDK','4DK以上','オフィス・店舗'); var price = new Array('家賃を選択','すべて','4万円以下','4万円超~5万円以下','5万円超~6万円以下','6万円超~7万円以下','7万円超'); */ var category = { 1:"アパート・マンション・戸建", 2:"事務所・店舗・倉庫・駐車場", 0:"undefined" }; var area = { 1:"長野市北部(犀川以北)", 2:"長野市南部(犀川以南)", 3:"千曲市", 4:"長野県内その他", 0:"undefined" }; var scale = { 1:"1R~1DK(+S)", 2:"1LDK(+S)", 3:"2K~2DK(+S)", 4:"2LDK(+S)", 5:"3K~3LDK(+S)", 6:"4DK以上", 7:"事務所・店舗・倉庫・駐車場", 0:"undefined" }; var price = { 1:"4万円以下", 2:"4万円超~5万円以下", 3:"5万円超~6万円以下", 4:"6万円超~7万円以下", 5:"7万円超", 0:"undefined" }; var s_category = new Array(); var s_area = new Array(); var s_scale = new Array(); var s_price = new Array(); $(function(){ $("#options :checkbox").click(function(){ getParam(); clearOverlays(); // 表示済のマーカーを消去 plot(); }); init(36.642735368497526,138.18912506103516,15); }); function init(lat,lng,z) { var varlat = lat; var varlng = lng; var varzm = z; var inipos = new google.maps.LatLng(varlat, varlng); var mapOptions = { zoom: 13, disableDefaultUI: false, zoomControl: true, scrollwheel: true, disableDoubleClickZoom: false, mapTypeId: google.maps.MapTypeId.ROADMAP, center: inipos }; map = new google.maps.Map(document.getElementById("maparea"),mapOptions); //移動終了後にエリアに対応するマーカーを表示 google.maps.event.addListener(map, "dragend", function() { if(mflag == 1){ clearOverlays(); // 表示済のマーカーを消去 getParam(); plot(); } mflag = 1; }); google.maps.event.addListener(map, "zoom_changed", function() { if(mflag == 1){ clearOverlays(); // 表示済のマーカーを消去 getParam(); plot(); } mflag = 1; }); } function getParam(){ s_category = new Array(); s_area = new Array(); s_scale = new Array(); s_price = new Array(); $("#category input[type='checkbox']").each(function(){ //s_category.push(category[$(this).attr("value")]); if ($(this).prop('checked') == true) { s_category.push($(this).attr("value")); } }); /*$("#area :checked").each(function(){ s_area.push(area[$(this).attr("value")]); });*/ $("#scale input[type='checkbox']").each(function(){ //s_scale.push(scale[$(this).attr("value")]); if ($(this).prop('checked') == true) { s_scale.push($(this).attr("value")); } }); $("#price input[type='checkbox']").each(function(){ //s_price.push(price[$(this).attr("value")]); if ($(this).prop('checked') == true) { s_price.push($(this).attr("value")); } }); } function plot(){ //参考 //https://groups.google.fr/group/Google-Maps-API-Japan/browse_thread/thread/a91fc7af4a1907c1 var latlngBounds = map.getBounds(); var swLatlng = latlngBounds.getSouthWest(); var swlat = swLatlng.lat(); var swlng = swLatlng.lng(); var neLatlng = latlngBounds.getNorthEast(); var nelat = neLatlng.lat(); var nelng = neLatlng.lng(); str_category = s_category.join(","); str_area = s_area.join(","); str_scale = s_scale.join(","); str_price = s_price.join(","); var url = "./?m=data&nelat=" + nelat + "&nelng=" + nelng + "&swlat=" + swlat + "&swlng=" + swlng + "&cat_shubetsu=" + str_category + "&area=" + str_area + "&cat_madori=" + str_scale + "&cat_chinryou=" + str_price; //console.debug(swLatlng); //console.debug(url); //./data.php?nelat=36.65650777456703&nelng=138.22689056396484&swlat=36.62896049954082&swlng=138.15135955810547 jQuery.ajax({ url : url, type : "get", success : function(results){ var xml = results //$("h1").prepend(url) // XMLのmarkerタグ要素の配列markersを作る var markers = xml.getElementsByTagName("marker"); var n = markers.length; if(n > 0){ data = new Array(); for(var i = 0; i < n; i++) { data[i] = new Array(); data[i][0] = markers[i].getAttribute("Id"); data[i][1] = markers[i].getAttribute("Title"); data[i][2] = markers[i].getAttribute("Select4");//category data[i][3] = markers[i].getAttribute("Select5");//area data[i][4] = markers[i].getAttribute("Madori"); data[i][5] = markers[i].getAttribute("Chinryou"); data[i][6] = parseFloat(markers[i].getAttribute("Latitude")); data[i][7] = parseFloat(markers[i].getAttribute("Longtitude")); data[i][8] = markers[i].getAttribute("Zoom"); data[i][9] = markers[i].getAttribute("Bid"); data[i][10] = markers[i].getAttribute("filename"); } var datalist = new Array(); var c = 1; var clat = 0; var clng = 0; for(i = 0; i < n; i++){ datalist.push(data[i]); if(c > maxpoint){ break; }else{ c++; clat += data[i][6]; clng += data[i][7]; } } n = datalist.length; if(n > 0){ var detail = ""; if(n > maxpoint){ n = maxpoint; var detail = "" + maxpoint + "件以上の物件があります。
地図を拡大してご覧下さい。
"; }else{ //var detail = "" + n + "件の物件があります。"; var detail = ""; } for(i = 0; i < n; i++){ var marker = makeMarker(map, datalist[i][6], datalist[i][7]); var infowindow = makeWindow(datalist[i]); makeInfowindow(map, marker, infowindow); } }else{ var detail = "条件に合う物件はありません"; } }else{ var detail = "該当の物件はありません"; } $("p#detail").html(detail); } }); } function closeInfowindows() { for (var i = 0; i < infowindowlist.length; i++) { infowindowlist[i].close(); } } function makeWindow(msg) { var infowindow = new google.maps.InfoWindow({ content: makeMessage(msg) }); infowindowlist.push(infowindow); return infowindow; } function makeMarker(map, lat, lng) { var marker = new google.maps.Marker({ position: new google.maps.LatLng(lat, lng), map: map }); marker.setIcon('/common/images/icon_2d.png') markerlist.push(marker); return marker; } function makeInfowindow(map, marker, infowindow) { google.maps.event.addListener(marker, 'click', function(e) { closeInfowindows(); infowindow.open(map, marker); }); } function makeMessage(g) { var msg; msg = "
" + "
" //+ "" + g[1] + "" + "" + g[1] + "" + "
" + "
" + "

" + g[1] + "

" + scale[g[4]] + "
" + g[5] + " 万円
" + category[g[2]] + "
" //+ g[6] + "
" //+ g[7] + "
" + "詳しくはこちら" + "
" + "
" + "
"; return msg; } function setArea(x,y) { mflag = 1; point = new google.maps.LatLng(x,y); getParam(); map.panTo(point); clearOverlays(); getParam(); plot(); } function clearOverlays() { for (var i in markerlist) { markerlist[i].setMap(null); } }