Javascript 将地图居中于地图上的点上
我对开放式街道地图有点小问题。 我有以下代码:Javascript 将地图居中于地图上的点上,javascript,html,Javascript,Html,我对开放式街道地图有点小问题。 我有以下代码: function onLocationFound(e) { var radius = e.accuracy / 2; lat = e.latlng.lat; lng = e.latlng.lng; L.marker(e.latlng).addTo(map).bindPopup("Tutaj jesteś!!!"); //L.ci
function onLocationFound(e) {
var radius = e.accuracy / 2;
lat = e.latlng.lat;
lng = e.latlng.lng;
L.marker(e.latlng).addTo(map).bindPopup("Tutaj jesteś!!!");
//L.circle(e.latlng, radius).addTo(map);
}
function onLocationError(e) {
//alert(e.message);
console.log(e.message);
}
var map = L.map('mapdiv', {
editable: true,
fadeAnimation: false
}).setView([54.35070881441067, 18.641191756395074], 15);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
// L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://osm.org/copyright">OpenStreetMap</a> contributors',
maxZoom: 16, zoomControl: true, detectRetina: true
}).addTo(map);
map.on('locationfound', onLocationFound);
map.on('locationerror', onLocationError);
map.locate({setView: true, maxZoom: 16});
let myFilter = ['grayscale:100%'];
let myTileLayer = L.tileLayer.colorFilter('https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png', {
attribution: '<a href="https://wikimediafoundation.org/wiki/Maps_Terms_of_Use">Wikimedia</a>',
filter: myFilter,
}).addTo(map);
var LeafIcon = L.Icon.extend({
options: {
iconSize: [25, 29],
iconAnchor: [25, 29],
popupAnchor: [-12, -22]
}
});
L.icon = function (options) {
return new L.Icon(options);
};
var icons = {
greenIcon: new LeafIcon({iconUrl: '{{asset('assets/images/ikon19.png')}}'}),
redIcon: new LeafIcon({iconUrl: '{{asset('assets/images/ikon20.png')}}'}),
blackIcon: new LeafIcon({iconUrl: '{{asset('assets/images/ikon20.png')}}'})
}
var image = '';
$.ajax({
url: '{{url('/getPointForMap')}}',
method: 'get',
cache: false,
success: function (data) {
$.each(JSON.parse(data), function(i, poi) {
if (poi.photo != ''){
image = '<img src="'+poi.photo+'" class="mapImgF"><br/>';
}
L.marker([poi.lat, poi.lng], {icon: icons[poi.marker]}).addTo(map).addTo(map).bindPopup('<a href="'+poi.url+'">' + image + '<div class="mapTitleF">' + poi.name + '</div>' + '<div class="mapDescF"> ocena: ' + poi.score + '<br/>' + poi.price + ' </div></a>', {maxWidth: "auto", closeOnClick: true});
});
}
});
<div id="mapdiv"></div>
函数onLocationFound(e){
var半径=e.精度/2;
lat=e.latlng.lat;
液化天然气=e.latlng.lng;
L.marker(e.latlng).addTo(map).bindpoop(“Tutaj jesteś!!!”);
//L.圆(e.板条,半径)。添加到(地图);
}
函数onLocationError(e){
//警报(e.message);
控制台日志(e.message);
}
var map=L.map('mapdiv'{
是的,
fadeAnimation:错误
}).setView([54.35070881441067,18.641191756395074],15);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'{
//L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png'{
属性:“©;参与者”,
maxZoom:16,zoomControl:true,DetectRetentina:true
}).addTo(地图);
地图上('locationfound',onLocationFound);
map.on('locationerror',onLocationError);
locate({setView:true,maxZoom:16});
让myFilter=['灰度:100%'];
让myTileLayer=L.tileLayer.colorFilter('https://maps.wikimedia.org/osm-intl/{z} /{x}/{y}.png'{
归属:'',
过滤器:myFilter,
}).addTo(地图);
var LeafIcon=L.Icon.extend({
选项:{
iconSize:[25,29],
iconAnchor:[25,29],
popupAnchor:[-12,-22]
}
});
L.icon=功能(选项){
返回新的L.图标(选项);
};
变量图标={
绿色图标:新的叶子图标({iconUrl:'{{asset('assets/images/ikon19.png')}}),
redIcon:new-LeafIcon({iconUrl:'{{asset('assets/images/ikon20.png')}}),
blackIcon:new LeafIcon({iconUrl:'{{asset('assets/images/ikon20.png')}}})
}
var图像=“”;
$.ajax({
url:“{url('/getPointForMap')}}”,
方法:“get”,
cache:false,
成功:功能(数据){
$.each(JSON.parse(数据)、函数(i、poi){
如果(poi.photo!=''){
图像=“
”;
}
L.marker([poi.lat,poi.lng],{icon:icons[poi.marker]}).addTo(map).addTo(map).bindpoop('',{maxWidth:“auto”,closeOnClick:true});
});
}
});
地图通常工作正常,下载并显示点
我的问题是缩放设置。启动地图后,会要求用户获得定位权限。但是,在同意加载地图后,会设置地图缩放的最大缩放。我希望缩放尽可能低,以便用户所在的地图上有一个可见的片段
怎么做?我相信解决问题的关键是这一行:
map.locate({setView:true,maxZoom:16});
此处的maxZoom
参数确定显示用户位置时应自动设置的最大缩放比例(这并不意味着这是用户可以在地图上使用的最大缩放比例,它仅指自动视图设置)。因此,如果将其更改为map.locate({setView:true,maxZoom:8})
你应该看到区别
如果您想更深入地了解它,这里有相应的文档:我相信解决问题的关键是这一行:
map.locate({setView:true,maxZoom:16});
此处的maxZoom
参数确定显示用户位置时应自动设置的最大缩放比例(这并不意味着这是用户可以在地图上使用的最大缩放比例,它仅指自动视图设置)。因此,如果将其更改为map.locate({setView:true,maxZoom:8})
你应该看到区别
如果您想更深入地了解它,这里有相应的文档:Thx-这是有帮助的,但现在我在这里解决了这个问题:(灰色背景)我不确定这是否有帮助,但您可以尝试在找到用户之前更改默认的缩放:
.setView([54.35070881441067,18.641191756395074],15)
尝试将15
更改为与您在定位
功能中使用的相同缩放级别。这没有帮助:(Thx-这是帮助,但现在我在这里解决了这个问题:(灰色背景)我不确定这是否有帮助,但您可以尝试在定位用户之前更改默认的缩放:.setView([54.35070881061447,18.641191756395074],15);
尝试将15
更改为您在locate
功能中使用的相同缩放级别。这没有帮助:(