var j = 0 ; var lats = 0 ; var lngs = 0 ; var map; var marker_ary = new Array(); var currentInfoWindow function initMap() { if( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function( position ) { var data = position.coords ; var lat = data.latitude ; var lng = data.longitude ; var alt = data.altitude ; var accLatlng = data.accuracy ; var accAlt = data.altitudeAccuracy ; var heading = data.heading ; var speed = data.speed ; $.cookie("lats", lat); $.cookie("lngs", lng); var latlng = new google.maps.LatLng(lat,lng); var myOptions = { zoom: 16, center: latlng, minZoom : 12, mapTypeId: google.maps.MapTypeId.ROADMAP, draggable: false, styles: [{ "featureType": "poi", "elementType": "all", "stylers": [ { "visibility": "off" } ] }] }; $('#loader').fadeIn(1700); $('#loader-bg').fadeIn(1700); $('#map_canvas').css('visibility','hidden'); map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); var markers = new google.maps.Marker({ map:map, position:latlng, clickable:true, draggable:false, flat:false, visible:true, icon:"./img/googlemap_center.png", zIndex:100000000 }); google.maps.event.addListener(map, 'idle', function(){ console.log("620idle"); $('#loader').fadeIn(1700); $('#loader-bg').fadeIn(1700); var zoomlv = this.getZoom(); //console.log("Zoom625:"+zoomlv); $("#shop_list").empty(); $.cookie("i", 0); var j = 0; if(j == 0){ j = j+1; setPointMarker(lat,lng); setShop(lat,lng); } else { $('#more').html('Now Loading...'); $('#more').css('display', 'block'); setPointMarker(lat,lng); resetShops(lat,lng); } }); }, function( error ) { var errorInfo = [ "原因不明のエラーが発生しました…。" , "位置情報の取得が許可されませんでした…。" , "電波状況などで位置情報が取得できませんでした…。" , "位置情報の取得に時間がかかり過ぎてタイムアウトしました…。" ] ; var errorNo = error.code ; var errorMessage = "[エラー番号: " + errorNo + "]\n" + errorInfo[ errorNo ] ; $('#loader').fadeOut(700); $('#loader').css('display', 'none'); alert( errorMessage ) ; } , { "enableHighAccuracy": false, "timeout": 8000, "maximumAge": 2000, } ) ; } else { var errorMessage = "お使いの端末は、GeoLacation APIに対応していないのでこの機能はご利用いただけません。" ; alert( errorMessage ) ; } function MarkerClear() { $('#more').css('display', 'block'); if(marker_ary.length > 0){ for (i = 0; i < marker_ary.length; i++) { marker_ary[i].setMap(null); } for (i = 0; i <= marker_ary.length; i++) { marker_ary.shift(null); } marker_ary= []; } } function MarkerSet(lat,lng,text,sno,url,type){ if(!type){type = 0;} var url = "shop"; var icons = { 0:{icon:'2023/img/gps_pin0.png'}, 1:{icon:'img/gps_pin1.png'}, 2:{icon:'img/googlemap_icon_corona.png'}, 3:{icon:'img/campaign/lucky_campaign2022mapicon.png'} }; var marker_num = marker_ary.length; var marker_position = new google.maps.LatLng(lat,lng); var markerOpts = { map: map, position: marker_position, icon: icons[type].icon }; marker_ary[marker_num] = new google.maps.Marker(markerOpts); var offset = new google.maps.Size(0, -40); if(text.length>0){ var infoWndOpts = { content: ''+text+'', pixelOffset: offset, position: marker_position }; var infoWnd = new google.maps.InfoWindow(infoWndOpts); google.maps.event.addListener(marker_ary[marker_num], "click", function(){ if (currentInfoWindow) { currentInfoWindow.close(); } infoWnd.open(map, marker_ary[marker_num]); currentInfoWindow = infoWnd; }); } } function setPointMarker(lat,lng){ var bounds = map.getBounds(); map_ne_lat = bounds.getNorthEast().lat(); map_sw_lat = bounds.getSouthWest().lat(); map_ne_lng = bounds.getNorthEast().lng(); map_sw_lng = bounds.getSouthWest().lng(); var center_lat = (map_ne_lat + map_sw_lat)/2; var center_lon = (map_ne_lng + map_sw_lng)/2; var num = 0; var map_type = "gps"; var time1 = ""; var time2 = ""; var service = ""; $.ajax({ url: 'xml_file.php?ne_lat='+map_ne_lat+'&sw_lat='+map_sw_lat+'&ne_lng='+map_ne_lng+'&sw_lng='+map_sw_lng+'&type='+map_type+'&time1='+time1+'&time2='+time2+'&service='+service, type: 'GET', dataType: 'xml', timeout: 2000, error: function(xml){ console.log("part no refresh"); }, success: function(xml){ MarkerClear(); var num = $(xml).find( "Locate" ).length console.log("num802:"+num); $(xml).find("Locate").each(function(){ pattern = new RegExp("\\\\", "g"); var Locatesno = $("sno",this).text(); var LocateLat = $("lat",this).text(); var LocateLng = $("lng",this).text(); var LocateName = $("name",this).text(); var LocateUrl = $("url",this).text(); var LocateIcontype = $("type",this).text(); LocateName = LocateName.replace(pattern, ""); MarkerSet(LocateLat,LocateLng,LocateName,Locatesno,LocateUrl,LocateIcontype); // var marker_nums = marker_ary.length - 1; }); $('#loader').fadeOut(700); $('#loader').css('display', 'none'); $('#map_canvas').css('visibility', 'visible'); var markerCluster = new MarkerClusterer(map, marker_ary,{imagePath: './img/cluster/m'}); } //success: function(xml) }); //$.ajax } //setPointMarker() var i = 0; function setShop(lat,lng) { console.log("843setShop"); lat=$.cookie("lats"); lng=$.cookie("lngs"); var bounds = map.getBounds(); map_ne_lat = bounds.getNorthEast().lat(); map_sw_lat = bounds.getSouthWest().lat(); map_ne_lng = bounds.getNorthEast().lng(); map_sw_lng = bounds.getSouthWest().lng(); var center_lat = (map_ne_lat + map_sw_lat)/2; var center_lon = (map_ne_lng + map_sw_lng)/2; console.log(map_ne_lat+","+map_ne_lng); console.log(map_sw_lat+","+map_sw_lng); console.log("858radius:"+5); var obj = $(this); if (!obj.data('loading')) { obj.data('loading', true); $('#more').html('Now Loading...'); setTimeout(function() { var i = 0; $.ajax({ type: 'get', url: 'xml_shop_list.php', data: { type: "gps", lat: lat, lng: lng, ne_lat: map_ne_lat, sw_lat: map_sw_lat, ne_lng: map_ne_lng, sw_lng: map_sw_lng, radius: "radius", time1: "", time2: "", service: "", pg: i }, //data success: function(data){ if(data){ $("#shop_list").append(data); i=i+1; if(data.split("more").length>1){ $('#more').html('続きを表示'); }else{ $('#more').fadeOut(700); $('#more').css('display', 'none'); } }else{ $('#more').fadeOut(700); $('#more').css('display', 'none'); alert("検索の範囲には掲載店はございません。ズームを操作して検索範囲を広げてみてください。"); } } }); //$.ajax obj.data('loading', false); }, 3000); } } function resetShops() { console.log("905resetShops"); i=parseInt($.cookie("i")); var bounds = map.getBounds(); map_ne_lat = bounds.getNorthEast().lat(); map_sw_lat = bounds.getSouthWest().lat(); map_ne_lng = bounds.getNorthEast().lng(); map_sw_lng = bounds.getSouthWest().lng(); var center_lat = (map_ne_lat + map_sw_lat)/2; var center_lon = (map_ne_lng + map_sw_lng)/2; console.log(map_ne_lat+","+map_ne_lng); console.log(map_sw_lat+","+map_sw_lng); var obj = $(this); if (!obj.data('loading')) { obj.data('loading', true); $('#more').css('display', 'block'); $('#more').html('Now Loading...'); setTimeout(function() { $.ajax({ type: 'get', url: 'xml_shop_list.php', data: { type: "map", ne_lat: map_ne_lat, sw_lat: map_sw_lat, ne_lng: map_ne_lng, sw_lng: map_sw_lng, lat: center_lat, lng: center_lon, aid: "", bid: "", radius: "", time1: "", time2: "", service: "", pg: i }, //data success: function(data){ console.log("data952:"+data); if(data){ $("#shop_list").append(data); i = i+1; $.cookie("i", i); str = "shop_name813"; if(data.split("shop_name").length>20){ $('#more').html('続きを表示'); }else{ $("#more").empty(); } }else{ $("#more").empty(); } } }); //$.ajax obj.data('loading', false); }, 3000); } } } function checkZoom(){ var z = map.getZoom(); document.option_form.zoom.value=z; document.option_form.submit(); } window.addEventListener("load",function(){ initMap(); });