标签: angular-leaflet-directive

Leaflet - 获取覆盖全屏的地图

在传单和地图框中,我想去掉地图上方和下方的两个灰色条,如下图所示。我的 #map DOM 元素占据全屏,并且当我放大时灰色条消失(例如,zoomLevel = 3)。因此,灰色条似乎是由于 ZoomLevel 具有给定的图块高度(以 px 为单位)而导致的,该高度小于我的屏幕。

我想保持图块相同的缩放级别,但确保图块的高度至少覆盖全屏。

在此输入图像描述

这是我的地图设置代码:

                vm.map = L.map('map', {
                    center: [35, 15],
                    zoom: 2,
                    maxZoom: 21,
                    scrollWheelZoom: true,
                    maxBounds: [
                    [89.9, 160.9],
                    [-89.9, -160.9]
                    ],
                    zoomControl: false,
                    noWrap: true,
                    zoomAnimation: true,
                    markerZoomAnimation: true,
                });
Run Code Online (Sandbox Code Playgroud)

我使用的是 Angular,屏幕尺寸为 1920 x 1080

angularjs leaflet angular-leaflet-directive

5
推荐指数
1
解决办法
4335
查看次数

创建Leaflet Extended Control时如何利用Angular 4组件?

我现在与LeafletAngular CLI一起工作了几个星期,涉及一个涉及地理地图和室内地图(Leaflet自定义地图)的项目。

该应用程序在概念上非常简单。我必须以简单的位置树表的形式向用户提供室内位置(例如房间)的列表,在其中,用户单击时,必须调用新的室内地图。另外,我必须制作一个自定义搜索框,其中包含一些过滤选项,用于搜索结构化数据集并以小叶标记的形式在地图上绘制数据。

我的问题是:考虑到应用程序的性质和我正在使用的技术(Leaflet库Angular CLI 实现上述2个控件(位置树和搜索框)的最佳方法什么?角4.x))?

从我的角度来看,我现在可以看到两个选项:

1)使用Leaflet L.control.extended(negative(-):创建控件(位置树和带有过滤器的搜索框):在我看来,我必须按顺序在L.control.extended'onAdd'函数中静态键入html 创建控件->没有Angular 4模板引擎的优势)

2)以Angular 4方式使用Angular 4 Component的模板创建控件,而忽略了Leaflet L.control.extended的存在 (否定:在我看来,此选项不必要地使应用程序复杂化+直观上似乎是错误的,因为Leaflet扩展控件似乎对于这类问题“天生”)

如果能以某种方式将Angular组件动态嵌套在Leaflet自定义控件中,那就太好了。有什么建议么?

maps dynamic leaflet angular-leaflet-directive angular-cli

5
推荐指数
0
解决办法
303
查看次数

Angular Mapbox vs Angular Leaflet Mapbox vs Angular google maps

我很困惑哪一个使用.我目前正在使用角度映射框 - > http://inkblot.io/angular-mapbox,但是文档没有解释我想要的某些功能,比如如何将API调用中的标记与线连接以及如何将地图置于中心在标记生成时.Angular Mapbox使用$ scope来渲染数据非常棒,但是我想切换到其他东西才能拥有其他功能.有没有人知道一个简单的解决方案,使用带有$ scope的ngrepeat渲染数据,用线条连接这些标记,并在生成这些标记时使地图居中?

google-maps-api-3 angularjs leaflet mapbox angular-leaflet-directive

3
推荐指数
1
解决办法
3178
查看次数

传单地图来源

是否有所有潜在地图来源的列表?在示例页面上,可以浏览四种类型的地图。外面还有什么? http://tombatossals.github.io/angular-leaflet-directive/#!/

openstreetmap leaflet angular-leaflet-directive

2
推荐指数
1
解决办法
1055
查看次数

将(旋转的)ImageOverlay 内的 X 和 Y 坐标转换为纬度和经度

在阅读了 Projection 的文档和一些尝试失败的测试后,我发现自己无法找到解决此问题的方法。

我发现的所有解决方案都与 x 和 y 坐标参考墨卡托地图投影这一事实有关,但在这种情况下,我将它们来自放置在地图图层上的本地图像。

假设我有一个 400px * 200px 的灰色图像,使用 ImageOverlay.Rotated 放置在传单地图上,位置如下:

var topleft = L.latLng(41.604766, 0.606402);
var topRight = L.latLng(41.605107, 0.606858);
var bottomleft = L.latLng(41.604610, 0.606613);
Run Code Online (Sandbox Code Playgroud)

此图像使用左上角、右上角和左下角坐标作为参考放置在地图上。

结果是一个稍微向北旋转的矩形。

如果我知道我将手机留在像素 100,50(原始图像的左角)处,我如何将这个笛卡尔坐标转换为我的地图的纬度和经度以显示它?

如果它是一个与北方完美对齐的矩形,我想我可以得到左上角和左下角之间的 º 差异,将其除以像素数,然后将结果与手机的 Y 相乘以获得纬度。使用先验值,我将它乘以我手机的 X 以获得我手机的经度。

但鉴于形状是旋转的,世界并不平坦,而且我在地理和三角学方面非常糟糕,我不确定它是否足够精确。

最后,我们说的是电话,而不是建筑物。几米外(2-4 米)是可以的,一个建筑街区之外就不行。

javascript leaflet typescript angular-leaflet-directive angular

2
推荐指数
1
解决办法
931
查看次数

更改传单地图的颜色

我想改变 leafletjs 中地图的颜色,但我只是不知道它是哪个类。我发现

.leaflet-container {
    background-color:rgba(255,0,0,0.0);
}
Run Code Online (Sandbox Code Playgroud)

然而它只会改变地图外的颜色(当地图完全缩小时你会看到它)但是哪些类负责国家颜色和水?

javascript leaflet angular-leaflet-directive

2
推荐指数
1
解决办法
2万
查看次数

如何动态添加图层和更新图层控件:传单

我正在使用leaflet api,用户可以在其中绘制形状以映射(图像)...

最初使用 imageoverlay 为底图添加图层控件(处理 1 个图层)......

我在页面上添加了一个 id 'newLyer' 的按钮,点击事件处理新图层的创建......即用户可以创建新图层并更新图层控件(现在正在处理 2 个图层)......

我使用了几种方法来创建图层并添加到控件但失败了....

将新图层添加到 layerGroup

var layerGroup = new L.LayerGroup(),
                    imageOverlayUrl = 'aa.jpg',
                    // New imageoverlay added to the layergroup
                    imageOverlay = new L.ImageOverlay(imageOverlayUrl, bounds).addTo(layerGroup),
                    // New featuregroup added to the layergroup
                    featureGroup = new L.FeatureGroup().addTo(layerGroup);
Run Code Online (Sandbox Code Playgroud)

我需要添加控件的 LayerControl(如果我是正确的)

        var layerControl = new L.control.layers({
            'Main': layerGroup,
            //here i need to add new layer control
            }, null, { collapsed: false }).addTo(map);
Run Code Online (Sandbox Code Playgroud)

到目前为止是静态代码的 OnClick 函数,这将在点击时执行

        $('#newLayer').click(function addNewLayer() {
            // Second layergroup not …
Run Code Online (Sandbox Code Playgroud)

javascript jquery google-maps leaflet angular-leaflet-directive

1
推荐指数
1
解决办法
9118
查看次数

AngularJS + Leaflet - 初始化服务上的传单地图

我正在AngularJS中构建一个应用程序,它使用LeafletJS与地图进行交互,提供在我称之为阶段的不同可能的交互.对于每个阶段,都有一个UIRouter状态,包括控制器和模板.

我目前正在通过服务提供传单功能.想法是该服务初始化Leaflet地图并提供对该州控制器的一些有限访问.因此,这些控制器将调用服务功能,例如setupMarkersInteractions设置回调,以便在地图上放置标记.

但是,我在通过Leaflet leaflet.map()函数初始化地图时遇到了一个问题,即:Error: Map container not found.这与Leaflet无法找到与地图相关联的HTML元素有关.

目前,我有点这样做:

function mapService() { 
  var map;

  return {
    initializeMap : initializeMap,
    setupMarkersInteractions : setupMarkersInteractions
  };

  function initializeMap() {
    map = leaflet.map('map');
  }

  function setupMarkersInteractions() {
    map.on('click', markerPlacementCallback);
  }
}
Run Code Online (Sandbox Code Playgroud)

initializeMap函数告诉leaflet.map我查找一个HTML元素id='map',该元素在状态模板上声明.

现在,对于实际问题,这是否与某种AngularJS服务无法访问HTML模板有关?我在这个问题上找不到任何东西,但我认为服务不能直接访问视图
是有意义的...... 如果是,我应该探索什么样的解决方法?我已经研究过leaflet-directive,但它似乎没有提供添加和删除自定义回调的可能性,我希望具有灵活性(例如,当我使用Leaflet-Freedraw添加免费绘制功能时,事情变得复杂).

我考虑leaflet.map直接使用HTMLElement元素的参数,但我仍然无法使它工作 - 虽然我有可能没有传递应该的东西.

angularjs leaflet angular-leaflet-directive

1
推荐指数
1
解决办法
2453
查看次数

单张嘈杂的控制台输出

我开始使用传单地图,我在js控制台中输出非常嘈杂.它看起来像是在某种调试模式下工作.它有任何选项可以关闭它吗?

javascript leaflet angular-leaflet-directive

1
推荐指数
1
解决办法
437
查看次数

给定中心和正方形宽度的传单正方形

在 Leaflet 上,给定中心和半径,我可以轻松创建一个新圆:

// Circle
var radius = 500; // [metres]
var circleLocation = new L.LatLng(centreLat, centreLon);
var circleOptions = {
    color: 'red',
    fillColor: '#f03',
    fillOpacity: 0.5
};
var circle = new L.Circle(circleLocation, radius, circleOptions);
map.addLayer(circle);
Run Code Online (Sandbox Code Playgroud)

上面的圆是创建和绘制的,没有问题,就这样了。

但是,如果我现在想创建并绘制一个包围圆的矩形,则它不起作用。这是我所做的:

// Rectangle
var halfside = radius;   // It was 500 metres as reported above
// convert from latlng to a point (<-- I think the problem is here!)
var centre_point = map.latLngToContainerPoint([newCentreLat, newCentreLon]);
// Compute SouthWest and NorthEast points
var sw_point = …
Run Code Online (Sandbox Code Playgroud)

javascript latitude-longitude leaflet angular-leaflet-directive

0
推荐指数
1
解决办法
3057
查看次数