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('
');
$('#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('
');
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('
');
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();
});