// // 今日の宿 // var map = null; var circle = null; var marker0 = null; var marker = null; var point0 = null; var icon = new Array(7); var viewplans = 5; var scale0; var id0; function load2(scale, id) { if (GBrowserIsCompatible()) { scale0 = scale; id0 = id; map = new GMap2(document.getElementById("googlemap")); map.addControl(new GSmallMapControl()); map.addControl(new GScaleControl()); point0 = new GLatLng(35.7, 139.7); map.setCenter(point0, 14); var loading_map = document.getElementById("googlemap"); loading_map.style.display = "block"; // loading_map.style.filter = "alpha(opacity=50); opacity:0.50;"; var loading_image = document.getElementById("loading"); loading_image.style.display = "block"; for(i=0 ; i<7 ; i=i+1) { icon[i] = new GIcon(); icon[i].iconSize = new GSize(32, 32); icon[i].shadowSize = new GSize(32, 32); icon[i].iconAnchor = new GPoint(16, 32); } icon[0].image = "http://maps.google.co.jp/mapfiles/ms/icons/red-pushpin.png"; icon[1].image = "http://maps.google.co.jp/mapfiles/ms/icons/purple-dot.png"; icon[2].image = "http://maps.google.co.jp/mapfiles/ms/icons/blue-dot.png"; icon[3].image = "http://maps.google.co.jp/mapfiles/ms/icons/ltblue-dot.png"; icon[4].image = "http://maps.google.co.jp/mapfiles/ms/icons/green-dot.png"; icon[5].image = "http://maps.google.co.jp/mapfiles/ms/icons/yellow-dot.png"; icon[6].image = "http://maps.google.co.jp/mapfiles/ms/icons/orange-dot.png"; icon[0].shadow = "http://maps.google.co.jp/mapfiles/ms/icons/pushpin_shadow.png"; icon[1].shadow = "http://maps.google.co.jp/mapfiles/ms/icons/shadow.png"; icon[2].shadow = "http://maps.google.co.jp/mapfiles/ms/icons/shadow.png"; icon[3].shadow = "http://maps.google.co.jp/mapfiles/ms/icons/shadow.png"; icon[4].shadow = "http://maps.google.co.jp/mapfiles/ms/icons/shadow.png"; icon[5].shadow = "http://maps.google.co.jp/mapfiles/ms/icons/shadow.png"; icon[6].shadow = "http://maps.google.co.jp/mapfiles/ms/icons/shadow.png"; setNewPoint("", point0); // GEvent.addListener(map, "click", setNewPoint); } } function setNewPoint(overlay, point) { if(overlay == marker0 || overlay == "undefined") { return; } if(overlay) { return; } point0 = point; drawPoint(scale0, ""); drawCenterPosition(); } function setNewPoint2() { if(document.where.landmark.value != ""){ landmark = document.where.landmark.value; drawPoint("landmark", landmark); } } function setNewPoint3() { if(document.when.adult.value != "" && document.when.child.value != "" && document.when.checkin_year.value != "" && document.when.checkin_month.value != "" && document.when.checkin_day.value != "" && document.when.checkout_year.value != "" && document.when.checkout_month.value != "" && document.when.checkout_day.value != "" && document.when.radius.value != "") { drawPoint("search", ""); drawCenterPosition(); } } function selectLandmark(landmark) { document.where.landmark.value = landmark; setNewPoint2(); } function drawPoint(mode, landmark) { // if(document.when.site[0].checked == true) { // site = "rakuten"; // } else { // site = "jalan"; // } radius = 1.0; site = "jalan"; var loading_map = document.getElementById("googlemap"); // loading_map.style.filter = "alpha(opacity=50); opacity:0.50;"; var loading_image = document.getElementById("loading"); loading_image.style.display = "block"; map.clearOverlays(); sendPosition(mode, point0.lat(), point0.lng(), landmark, site, radius); } // // Send Position // function sendPosition(mode, lat, lng, landmark, site, radius) { //GXmlHttpオブジェクト生成 var request = GXmlHttp.create(); request.open("POST", "/info/view.php", true); request.onreadystatechange = function() { if (request.readyState == 4) { var text = request.responseText; alert(text); } } request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); //コールバック関数 request.onreadystatechange = function() { if (request.readyState == 4) { var res = request.responseText; //データ取得 var rows = res.split('\n'); //改行で分解 //順次座標にマーカー描画 for (var i = 0; i < rows.length; i++) { addMarker(rows[i]); } } } //送信 switch(mode) { case "hotel": request.send("mode=hotel&lat="+lat+"&lng="+lng+"&site="+site+"&radius="+radius+"&id="+id0); break; case "view": request.send("mode=view&lat="+lat+"&lng="+lng+"&site="+site+"&radius="+radius); break; case "landmark": request.send("mode=landmark&landmark="+landmark+"&lat="+lat+"&lng="+lng+"&site="+site+"&radius="+radius); break; case "search": request.send("mode=search&lat="+lat+"&lng="+lng+"&site="+site+"&radius="+radius); break; default: request.send("mode=view&lat="+lat+"&lng="+lng); break; } // request.send(null); } function addMarker(rows) { var lat2 = parseFloat(rows.split(',')[0]); var lng2 = parseFloat(rows.split(',')[1]); var color = rows.split(',')[2]; var hotelno = rows.split(',')[3]; var roomname = rows.split(',')[4]; // var reserveurl = rows.split(',')[5]; // var hotelname = rows.split(',')[6]; var address = rows.split(',')[7]; var special = rows.split(',')[8]; // var access = rows.split(',')[9]; var nearstation = rows.split(',')[10]; var lowestcost = rows.split(',')[11]; var highestcost = rows.split(',')[12]; var hotelimage = rows.split(',')[13]; var plans = parseInt(rows.split(',')[14]); var plan_name = []; var plan_url = []; var plan_food1 = []; var plan_food2 = []; var plan_price = []; var plans_view = 0; var plans_status = 0; var food1img; var food2img; if(plans > viewplans && color > 0) { plans_view = viewplans; plans_status = -1; } else { plans_view = plans; plans_status = 0; } for(var i=0 ; i 0) { marker = new GMarker(point, icon[color]); GEvent.addListener(marker, "mouseover", function() { // ホテル情報 var htmltext = "\n"+ "\n"+ "\n"+ "\n"+ "
名前"+hotelname+"
\n"+ "\n"; document.getElementById("view").innerHTML = htmltext; }); GEvent.addListener(marker, "click", function() { htmltext2 = ""+hotelname+""; map.openInfoWindowHtml(point, htmltext2); }); map.addOverlay(marker); } else if(color == 0) { point0 = point; map.setCenter(point0, 14); // map.centerAndZoom(point0, 14); drawCenterPosition(); } else if(color == -1) { alert("指定した場所が見つかりませんでした。"); } else if(color == -2) { var htmltext2 = "
"+ plans+"件の候補が見つかりました。"+ ""+ "
"; map.openInfoWindowHtml(point0, htmltext2); } else { var loading_map = document.getElementById("googlemap"); // loading_map.style.filter = "alpha(opacity=100; style=0); opacity:1.00;"; var loading_image = document.getElementById("loading"); loading_image.style.display = "none"; } } function drawCenterPosition() { var radius = 1.0; var latlngs = pseudoGCircle(point0, radius); var circle = new GPolygon(latlngs, "#ff0000", 5, 0.5, "#0000ff", 0.05); map.addOverlay(circle); marker0 = new GMarker(point0, icon[0]); map.addOverlay(marker0); } function moveToCenter() { map.setCenter(point0, 14); } //URL Encode (UTF-8) function encodeURL(str) { var character = ''; var unicode = ''; var string = ''; var i = 0; for (i = 0; i < str.length; i++) { character = str.charAt(i); unicode = str.charCodeAt(i); if (character == ' ') { string += '+'; } else { if (unicode == 0x2a || unicode == 0x2d || unicode == 0x2e || unicode == 0x5f || ((unicode >= 0x30) && (unicode <= 0x39)) || ((unicode >= 0x41) && (unicode <= 0x5a)) || ((unicode >= 0x61) && (unicode <= 0x7a))) { string = string + character; } else { if ((unicode >= 0x0) && (unicode <= 0x7f)) { character = '0' + unicode.toString(16); string += '%' + character.substr(character.length - 2); } else if (unicode > 0x1fffff) { string += '%' + (oxf0 + ((unicode & 0x1c0000) >> 18)).toString(16); string += '%' + (0x80 + ((unicode & 0x3f000) >> 12)).toString(16); string += '%' + (0x80 + ((unicode & 0xfc0) >> 6)).toString(16); string += '%' + (0x80 + (unicode & 0x3f)).toString(16); } else if (unicode > 0x7ff) { string += '%' + (0xe0 + ((unicode & 0xf000) >> 12)).toString(16); string += '%' + (0x80 + ((unicode & 0xfc0) >> 6)).toString(16); string += '%' + (0x80 + (unicode & 0x3f)).toString(16); } else { string += '%' + (0xc0 + ((unicode & 0x7c0) >> 6)).toString(16); string += '%' + (0x80 + (unicode & 0x3f)).toString(16); } } } } return string; } function createCircle(point, radius){ var vertex = 120; var TMP = 1 - 0.00669437999014132 * Math.pow(Math.sin(point.latRadians()), 2); var arc_lat = 110574.2758215944444 / Math.pow(TMP, 3/2); var arc_lng = (111319.490793273333 * Math.cos(point.latRadians())) / Math.pow(TMP, 1/2); // var arc_lng = Math.cos(point.latRadians()) / Math.pow(TMP, 1/2); // var R = radius * 100; var R = radius * 1000; var points = []; for (var i = 0 ; i <= vertex ; i++){ var rad = (i / (vertex / 2)) * Math.PI; var latlng = map.fromLatLngToDivPixel(point); var px = latlng.x + (R / arc_lat) * Math.cos(rad); var py = latlng.y + (R / arc_lng) * Math.sin(rad); points.push(map.fromContainerPixelToLatLng(new GPoint(px, py))); } return points; } function pseudoGCircle(point, radius, color, weight, opacity) { var vertex = 120; var TMP = 1 - 0.00669437999014132 * Math.pow(Math.sin(point.latRadians()), 2); var arc_lat = 110574.2758215944444 / Math.pow(TMP, 3/2); var arc_lng = (111319.490793273333 * Math.cos(point.latRadians())) / Math.pow(TMP, 1/2); var R = radius * 1000; // var points = new Array(vertex); var points = []; for (i = 0; i <= vertex; i++) { var rad = (i / (vertex / 2)) * Math.PI; var lat = (R / arc_lat) * Math.sin(rad) + point.lat(); var lng = (R / arc_lng) * Math.cos(rad) + point.lng(); points.push(new GLatLng(lat, lng)); } return points; }