What I need? I need some waysomething to make it stop resizing this resizeway. I needThe map CAN NOT be able to put zoom in or out andfit the layer stay perfectly abovescreen in this non sense shape. As you can see in the initial position without deformfirst image, because I need to see every line that it showsis respecting the closest as possible ofcity shape, but the street displayed by OSM because it brings information about each streetsecond image (the numberswith zoom in) it does not respect it anymore. I need it keeps respecting the real city shape all the time no matter how many zoom levels I put in.
What could I do to solve this?
This is my map html
<html>
<head>
<title>Guarulhos</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="https://openlayers.org/en/v4.4.2/css/ol.css" type="text/css">
<link href="https://cdn.jsdelivr.net/npm/ol-geocoder@latest/dist/ol-geocoder.min.css" rel="stylesheet">
<link rel="stylesheet" href="css/mapa.css">
<!-- The line below is only needed for old environments like Internet Explorer and Android 4.x -->
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>
<script src="https://openlayers.org/en/v4.4.2/build/ol.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/ol-geocoder"></script>
<script src="js/mapa.js"></script>
</head>
<body>
<div class="navbar">
<div class="img">
<img src="./images/logo_guarulhos.png" alt="Unidesk" class="img-responsive logo">
</div>
<div class="user">
Olá <?php echo $user['name']?><br>
<div class="btn-lgout">
<a href="logout.php">Sair</a>
</div>
</div>
</div>
<div id="mapholder">
<div id="map" class="map"></div>
<div id="mouse-position"></div>
</div>
<div id="popup" class="ol-popup">
<a href="#" id="popup-closer" class="ol-popup-closer"></a>
<div id="popup-content"></div>
</div>
<input type="text" id="mapext" value="[mapext]">
<script type="text/javascript">
var container = document.getElementById('popup');
var content = document.getElementById('popup-content');
var closer = document.getElementById('popup-closer');
var myurl = 'http://localhost/cgi-bin/mapserv.exe?map=../htdocs/Guarulhos/mapfile.map';
var exurl = 'https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer';
var extent = ol.proj.transformExtent([-46.570612, -23.508703, -46.357596, -23.308953], 'EPSG:4326', 'EPSG:3857');
var extent1 = ol.proj.transformExtent([-46.556415 -23.426757 -46.449907 -23.320249], 'EPSG:4326', 'EPSG:3857');
var overlay = new ol.Overlay(/** @type {olx.OverlayOptions} */ ({
element: container,
autoPan: true,
autoPanAnimation: {
duration: 250
}
}));
var geocoder = new Geocoder('nominatim', {
provider: 'osm',
// key: 'mapquest',
lang: 'pt-BR', //en-US, fr-FR
placeholder: 'Digite um endereço',
targetType: 'text-input',
limit: 5,
keepOpen: true
});
closer.onclick = function() {
overlay.setPosition(undefined);
closer.blur();
return false;
};
var osm = new ol.layer.Tile({
source: new ol.source.OSM()
});
// new ol.layer.Image({//this is for testing
// source: new ol.source.ImageArcGISRest({
// ratio: 1,
// params: {},
// url: exurl
// })
// });
var guarulhos = new ol.layer.Image({ //this is my map
source: new ol.source.ImageWMS({
ratio: 1,
params: {
'LAYERS': 'face_guarulhos, pg_trechos',
'mode': 'map',
},
serverType: 'mapserver',
url: myurl,
projection: 'EPSG:4326'
}),
extent: extent,
name: 'face_guarulhos'
});
var mousePositionControl = new ol.control.MousePosition({
coordinateFormat: function(coordinate) {
lon = coordinate[0];
lat = coordinate[1];
lon = lon % 360;
if (lon > 180) {
lon = lon - 360;
} else if (lon < -180) {
lon = 360 + lon;
}
modifiedCoordinate = [lon, lat]
return ol.coordinate.format(modifiedCoordinate, "{x}, {y}", 6);
},
projection: 'EPSG:4326',
// comment the following two lines to have the mouse position
// be placed within the map.
className: 'custom-mouse-position',
target: document.getElementById('mouse-position'),
undefinedHTML: ' '
});
var map = new ol.Map({
controls: ol.control.defaults({
attributionOptions: /** {olx.control.AttributionOption} */({
collapsible: false
})
}).extend([mousePositionControl]),
layers: [osm, guarulhos],
target: 'map',
projection: 'EPSG:3857',
overlays: [overlay],
maxExtent : ol.extent.boundingExtent(extent)
});
map.getView().fit(extent, map.getSize());
map.getView().setResolution(map.getView().getResolutionForExtent(extent, map.getSize()));
map.addControl(geocoder);
geocoder.on('addresschosen', function(evt){
var coord = ol.proj.transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326');
if(testarRange(coord)){
getInfoPoint(evt);
}else {
alert("Fora dos limites!");
var zoom = map.getView().getZoom();
var centro = map.getView().getCenter();
map.getView().setZoom(zoom).setCenter(centro);
}
// overlay.setPosition(coord);
});
map.on('click', function (evt) {
var coord = ol.proj.transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326');
if(testarRange(coord)){
getInfoPoint(evt);
// var rome = new ol.Feature({
// geometry: new ol.geom.Point(ol.proj.fromLonLat(coord))
// });
//
// rome.setStyle(new ol.style.Style({
// text: new ol.style.Text({
// text: 'Hello',
// scale: 1.3,
// fill: new ol.style.Fill({
// color: '#000000'
// })
// })
// }));
//
// var vectorSource = new ol.source.Vector({
// features: [rome]
// });
//
// var vectorLayer = new ol.layer.Vector({
// source: vectorSource,
// name: 'marker'
// });
//
// map.getLayers().forEach(element => {
// if(element.get('name') === 'marker'){
//
// }
// });
//
// map.addLayer(vectorLayer);
console.log(map.getLayers());
}else {
alert("Fora dos limites!");
}
});
map.on('moveend', (function(){
var mapext = sessionStorage.getItem("mapext");
console.log(mapext);
}));
function testarRange(coord) {
var lon = coord[0]; //longitude
var lat = coord[1]; //latitude
if(lon >= -46.570612 && lon <= -46.357596 && lat >= -23.508703 && lat <= -23.308953){
return true;
}else {
return false;
}
}
function getInfoPoint (evt) {
var coordinate = evt.coordinate;
// var data = {'lon': coordinate[0], 'lat': coordinate[1]};
var data = {'lon': lon, 'lat': lat};
$.ajax({
type: "POST",
url: 'coordinates.php',
data: data,
success: function(data)
{
var point = JSON.parse(data);
content.innerHTML ="<label class='top'> Informações </label><br/>"+
"<label class='left'>Quadra</label>"+
"<label class='right'>"+ point.quadra +"</label> "+
"<label class='left'>Valor</label>"+
"<label class='right'>"+point.valor+"</label>"+
"<label class='left'>Face</label>"+
"<label class='right'>"+point.face+"</label>"+
"<label class='left'>Folha</label>"+
"<label class='right'>"+point.folha+"</label>"+
"<label class='left'>Parâmetro</label>"+
"<label class='right'>"+point.parametro+"</label>";
overlay.setPosition(coordinate);
// console.log(point);
}
});
}
</script>
</body>
</html>
And this is my mapfile
MAP
NAME "guarulhos"
EXTENT -46.570612 -23.508703 -46.357596 -23.308953
#EXTENT 339574.172100 7399304.302223 361316.525900 7421573.107621
SIZE 800 800
QUERYMAP
STATUS on
STYLE normal
END
UNITS METERS
SHAPEPATH "data/"
IMAGECOLOR 155 155 155
OUTPUTFORMAT
NAME "png"
DRIVER AGG/PNG
MIMETYPE "image/png"
IMAGEMODE RGB
EXTENSION "png"
FORMATOPTION "GAMMA=0.75"
TRANSPARENT ON
END
# SCALEBAR
# IMAGECOLOR 255 255 255
# LABEL
# COLOR 0 0 0
# SIZE SMALL
# END
# SIZE 150 5
# COLOR 255 255 255
# BACKGROUNDCOLOR 0 0 0
# OUTLINECOLOR 0 0 0
# UNITS kilometers
# INTERVALS 5
# STATUS EMBED
# END
LEGEND
STATUS EMBED
POSITION UL
KEYSIZE 18 12
LABEL
TYPE BITMAP
SIZE MEDIUM
COLOR 255 0 0
END
END
WEB
TEMPLATE "template.html"
IMAGEPATH "/ms4w/tmp/ms_tmp/"
IMAGEURL "/ms_tmp/"
METADATA
"wms_title" "wms guarulhos"
"wms_onlineresource" "localhost/cgi-bin/mapserv.exe?map=../htdocs/Guarulhos/mapfile.map"
"wms_srs" "EPSG:4326 EPSG:3857"
#"wms_srs" "EPSG:31983"
END
END
PROJECTION
"init=epsg:4326"
#"init=epsg:31983"
END
LAYER
NAME face_guarulhos
TYPE line
CONNECTIONTYPE postgis
CONNECTION "db stuff"
DATA "geomlatlon from ctageo.face_guarulhos"
LABELITEM "vu_2017_uf"
STATUS default
METADATA
"wms_title" "face_guarulhos"
END
CLASS
NAME "Faces Guarulhos"
OUTLINECOLOR 139 134 130
COLOR 255 145 145
LABEL
COLOR 132 31 31
SHADOWCOLOR 218 218 218
SHADOWSIZE 2 2
TYPE truetype
#FONT "sans"
SIZE 12
ANTIALIAS TRUE
POSITION CL
PARTIALS FALSE
MINDISTANCE 300
BUFFER 4
END
END
END
LAYER
NAME pg_trechos
TYPE line
CONNECTIONTYPE postgis
CONNECTION "db stuff"
DATA "geomlatlon from transporte.pg_trechos"
STATUS default
METADATA
"wms_title" "pg_trechos"
END
CLASS
NAME "Trechos"
OUTLINECOLOR 46 33 255
COLOR 226 225 232
END
END
END