var script_version_info = "Leaf-C version 1.1.05.20190405"; var script_author_info = "by Takanori Sato, 2007-2019"; var map_zoom = 12; var map_type_preset = "OSM"; var decimal_places = 6; var center_cross_image_file = "gomac.png"; var current_position_dot_image_file = "dot16_blue.png"; var info_window_max_width = 300; var map_type_options_preset = [ "OSM" ]; var use_geolocation = true; var use_search_box = false; var use_link_url = true; var description = ""; var description4system0 = ""; var description4system = ""; var map = null; var map_type_id = null; var useMapNote = {}; var useMapLegend = {}; var popup; var layerNum = 0; var layerName = []; var layerVisibility = []; var baseLayerIdsArray = []; var currentBaseLayer = null; var initialBaseLayer = null; var baseLayer = []; var baseLayerName = []; var controlLayers = null; var baseLayersArray = []; var layout_type = 0; var center_cross_marker = null; var positionMarker = null; var positionCircle = null; var indicate_lat = false; var indicate_lng = false; var indicate_lat60 = false; var indicate_lng60 = false; var indicate_zoom = false; var indicate_maptype = false; function mapTypeIdFromNameWord(word) { id = "OSM"; return id; } //function mapSourceNote(argMapTypeId, argMapTypeIdsArray) { function load() { // OpenStreetMap baseLayerIdsArray.push('OSM'); baseLayerName['OSM'] = "OpenStreetMap"; baseLayer['OSM'] = L.tileLayer('//tile.openstreetmap.jp/{z}/{x}/{y}.png', { // maxZoom: 18, attribution: "© OpenStreetMap contributors", errorTileUrl: "tile_nodata.gif" }); map_type_id = "OSM"; getUrlArg(); // URL蠑墓焚縺ォ繧医k蝨ー轤ケ遲峨�謖�ョ壹r蜿ッ閭ス縺ォ縺吶k縲� initialBaseLayer = baseLayer[map_type_id]; var map_options = { center: [center_lat, center_lng], zoom: map_zoom, minZoom: 0, maxZoom: 18, zoomControl: false, layers: [initialBaseLayer] }; map = L.map('map_canvas', map_options); map.addControl(new L.Control.Zoom({position: "bottomright"})); currentBaseLayer = initialBaseLayer document.getElementById("iatcslat").value = map.getCenter().lat; document.getElementById("iatcslonglat").value = map.getCenter().lng; map.on('baselayerchange', function(evtLayer) { currentBaseLayer = evtLayer.layer; }); var mapTypeIdsArray = []; if ( (typeof map_type_options === "object") && (Object.prototype.toString.call(map_type_options) === "[object Array]") ) { for (var i = 0; i < map_type_options.length; i++) { if (mapTypeIdFromNameWord(map_type_options[i]) != null) { mapTypeIdsArray.push(mapTypeIdFromNameWord(map_type_options[i])); } } } if ( !(mapTypeIdsArray.length > 0) ) { mapTypeIdsArray = []; for (var i = 0; i < map_type_options_preset.length; i++) { if (mapTypeIdFromNameWord(map_type_options_preset[i]) != null) { mapTypeIdsArray.push(mapTypeIdFromNameWord(map_type_options_preset[i])); } } } for (var i = 0; i < mapTypeIdsArray.length; i++) { var iMapTypeId = mapTypeIdsArray[i]; if (iMapTypeId != null) { baseLayersArray[baseLayerName[iMapTypeId]] = baseLayer[iMapTypeId]; } } if (controlLayers != null) { map.removeControl(controlLayers); } controlLayers = L.control.layers(baseLayersArray); L.control.scale({imperial:false}).addTo(map); // geolocationSetup(); var center_cross_image = L.icon({ iconUrl: center_cross_image_file, //iconRetinaUrl: center_cross_image_file, iconSize: [100, 100], iconAnchor: [50, 50], }); center_cross_marker = new L.marker(map.getCenter(), { icon: center_cross_image, zIndexOffset: 10, clickable:false }).addTo(map); var circle = L.circleMarker(map.getCenter(), { color: 'red', fillColor: 'red', fillOpacity: 1, radius: 2 }).addTo(map); // if ( document.getElementById("description") ) { if ( !(document.getElementById("text_top")) && !(document.getElementById("text_bottom"))) { layout_type = 4; } else { layout_type =2; } } else { layout_type = 0; } // map.on('move', function (ev) { var point = map.latLngToLayerPoint(map.getCenter()) //中心の緯度経度を直交座標系に変更 var upperCenter = map.layerPointToLatLng([point.x, point.y - 30]); //直交座標系で少し上に移動し緯度経度に再変換 /* 地図の動きに合わせてピンと影も追従 */ center_cross_marker.closePopup(); //移動中はポップアップを隠す center_cross_marker.setLatLng(upperCenter); circle.setLatLng(map.getCenter()); }); map.on('moveend', function (ev) { center_cross_marker.setLatLng(map.getCenter()); // document.getElementById("iatcslat").value = map.getCenter().lat.toFixed(6); // document.getElementById("iatcslonglat").value = map.getCenter().lng.toFixed(6); document.getElementById("iatcslat").value = map.getCenter().lat; document.getElementById("iatcslonglat").value = map.getCenter().lng; circle.setLatLng(map.getCenter()); }); map.on('zoomend', function() { }); map.on('baselayerchange', function() { }); map.on('load', function() { }); indicateCenter(); // writeInitialUrl(); } function indicateCenter() { center_cross_marker.setLatLng(map.getCenter()); var lat_raw = map.getCenter().lat; var lng_raw = map.getCenter().lng; if (lng_raw > 180) { lng_raw = (lng_raw + 180) % 360 -180; } else if (lng_raw < -180) { lng_raw = -1 * ( (-1 * lng_raw + 180) % 360 -180); } if (indicate_lat) { var center_lat = ( Math.round(lat_raw * Math.pow(10, decimal_places) ) / Math.pow(10, decimal_places) ) + ""; var center_lat_decimal_point = center_lat.indexOf("."); if (center_lat_decimal_point == -1){ var center_lat_int = center_lat; var center_lat_dec = ""; } else { var center_lat_int = center_lat.substring(0, center_lat_decimal_point); var center_lat_dec = center_lat.substring(center_lat_decimal_point + 1, center_lat.length); } while (center_lat_dec.length < decimal_places) { center_lat_dec += "0"; } var center_lat_exp = center_lat_int + "." + center_lat_dec; document.getElementById("indicator_lat").innerHTML = center_lat_exp; } if (indicate_lng) { var center_lng = ( Math.round(lng_raw * Math.pow(10, decimal_places) ) / Math.pow(10, decimal_places) ) + ""; var center_lng_decimal_point = center_lng.indexOf("."); if (center_lng_decimal_point == -1){ var center_lng_int = center_lng; var center_lng_dec = ""; } else { var center_lng_int = center_lng.substring(0, center_lng_decimal_point); var center_lng_dec = center_lng.substring(center_lng_decimal_point + 1, center_lng.length); } while (center_lng_dec.length < decimal_places) { center_lng_dec += "0"; } var center_lng_exp = center_lng_int + "." + center_lng_dec; document.getElementById("indicator_lng").innerHTML = center_lng_exp; } if (indicate_lat60) { var lat_sign = 0; var lat_sign_str = ""; var lat_rounded = 0; var lat_deg = 0; var lat_min = 0; var lat_sec = 0; if ( lat_raw < 0 ) { lat_sign = -1; lat_sign_str = "蜊礼キッ"; } else { lat_sign = 1; lat_sign_str = "蛹礼キッ"; } lat_rounded = Math.round(lat_raw * lat_sign * 3600); lat_deg = Math.floor(lat_rounded / 3600); lat_min = Math.floor((lat_rounded - lat_deg * 3600) / 60); lat_sec = lat_rounded - (lat_deg * 3600 + lat_min * 60); } // if (indicate_lng60) { var lng_sign = 0; var lng_sign_str = ""; var lng_rounded = 0; var lng_deg = 0; var lng_min = 0; var lng_sec = 0; if ( lng_raw < 0 ) { lng_sign = -1; lng_sign_str = "隘ソ邨�"; } else { lng_sign = 1; lng_sign_str = "譚ア邨�"; } lng_rounded = Math.round(lng_raw * lng_sign *3600); lng_deg = Math.floor(lng_rounded / 3600); lng_min = Math.floor((lng_rounded - lng_deg * 3600) / 60); lng_sec = lng_rounded - (lng_deg * 3600 + lng_min * 60); } } //function indicateMapInfo() { function getBaseLayerId(objBaseLayer) { var baseLayerId = ''; for (var i = 0; i < baseLayerIdsArray.length; i++) { if (baseLayer[baseLayerIdsArray[i]] == objBaseLayer) { baseLayerId = baseLayerIdsArray[i]; } } return baseLayerId; } //function geolocationSetup() { function geolocationGetPosition() { if ( (use_geolocation == true) && (navigator.geolocation) ) { navigator.geolocation.getCurrentPosition(geolocationGetPositionSuccess, geolocationGetPositionError); } else { alert("error: geolocation get posotion"); } } function geolocationGetPositionSuccess(position) { if (map.hasLayer(positionMarker) == true) { map.removeLayer(positionMarker); } if (map.hasLayer(positionCircle) == true) { map.removeLayer(positionCircle); } var lat = position.coords.latitude; var lng = position.coords.longitude; var acc = position.coords.accuracy; positionMarker.setLatLng(L.latLng(lat, lng)); positionCircle.setLatLng(L.latLng(lat, lng)); positionCircle.setRadius(acc); // // var zoom = Math.floor(Math.log(40000000 * Math.cos(lat * (Math.PI / 180)) / acc) / Math.log(2.0)); var zoom = 12; if (zoom < 0) {zoom = 0;} if (zoom > 18) {zoom = 18;} map.setView(L.latLng(lat, lng), zoom); positionMarker.addTo(map); positionCircle.addTo(map); if (document.getElementById("ButtonClearPosition")) { document.getElementById("ButtonClearPosition").disabled = false; } } function geolocationGetPositionError(errorCode) { if (map.hasLayer(positionMarker) == true) { map.removeLayer(positionMarker); } if (map.hasLayer(positionCircle) == true) { map.removeLayer(positionCircle); } if (document.getElementById("ButtonClearPosition")) { document.getElementById("ButtonClearPosition").disabled = true; } var errorMessage = ""; switch ( errorCode ) { case 1: errorMessage = "geolocationGetPositionError:" + errorCode; break; case 2: errorMessage = "geolocationGetPositionError:" + errorCode; break; case 3: errorMessage = "geolocationGetPositionError:" + errorCode; break; default: errorMessage = "geolocationGetPositionError:" + errorCode; } alert("geolocationGetPositionError:" + errorMessage); } function geolocationClearPosition() { if (map.hasLayer(positionMarker) == true) { map.removeLayer(positionMarker); } if (map.hasLayer(positionCircle) == true) { map.removeLayer(positionCircle); } if (document.getElementById("ButtonClearPosition")) { document.getElementById("ButtonClearPosition").disabled = true; } } // //function writeInitialUrl() { //function writeUrl() { function getUrlArg() { var url_arg = []; url_arg["ll"] = ""; url_arg["z"] = ""; url_arg["t"] = ""; url_arg["data"] = ""; url_arg["file"] = ""; url_arg["cache"] = ""; url_arg["vm"] = ""; url_arg["vo"] = ""; url_arg["search"] = ""; url_arg["url"] = ""; var url_arg_str = location.search.substr(1).split('&'); for (var i = 0; i < url_arg_str.length; i++) { var s = url_arg_str[i].split('='); url_arg[s[0]] = decodeURIComponent(s[1]); } var ll = url_arg["ll"].split(','); if ( (ll[0] != "") && !(isNaN(ll[0] - 0)) && (ll[1] != "") && !(isNaN(ll[1] - 0)) ) { if ( (ll[0] >= -90) && (ll[0] <= 90) && (ll[1] >= -180) && (ll[1] <= 180) ) { center_lat = ll[0]; center_lng = ll[1]; } } if ( (url_arg["z"] != "") && !(isNaN(url_arg["z"] - 0)) ) { if ( (url_arg["z"] >= 0) && (url_arg["z"] <= 21) ) { map_zoom = parseInt(url_arg["z"], 10); } } if (url_arg["t"] != "") { if (mapTypeIdFromNameWord(url_arg["t"]) != null) { map_type_id = mapTypeIdFromNameWord(url_arg["t"]); } } switch ( url_arg["search"] ) { case "yes": case "y": use_search_box = true; break; case "no": case "n": use_search_box = false; break; } switch ( url_arg["url"] ) { case "yes": case "y": use_link_url = true; break; case "no": case "n": use_link_url = false; break; } } window.onload = load;