标签: leaflet

Angularjs与传单指令 - 清除标记

我有以下设置工作正常,但是,我有一些小问题..尝试了很多方法,但我不能摆脱标记添加新标记之前..

通过以下示例,无论何时从控制器推出,都会添加标记.在添加任何新标记之前,删除现有标记的最佳方法是什么?

 var module = angular.module('Map', []);   
 module.directive('sap', function() {

    return {
        restrict: 'E',
        replace: true,
        template: '<div></div>',
        link: function(scope, element, attrs) {
            var map = L.map(attrs.id, {
                center: [-35.123, 170.123],
                zoom: 14
            });
            //create a CloudMade tile layer and add it to the map
            L.tileLayer('http://{s}.tile.cloudmade.com/57cbb6ca8cac418dbb1a402586df4528/997/256/{z}/{x}/{y}.png', {
                maxZoom: 18
            }).addTo(map);

            //add markers dynamically
            var points = [];
            updatePoints(points);

       function updatePoints(pts) {

                for (var p in pts) {

                    L.marker([pts[p].lat, pts[p].long]).addTo(map).bindPopup(pts[p].message);
                }

            }


            scope.$watch(attrs.pointsource, function(value) {
                updatePoints(value);
            });

        }


    };
});
Run Code Online (Sandbox Code Playgroud)

在控制器内部,添加新标记的方法是 …

angularjs leaflet

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

在给出一对纬度对的列表中查找传单中的中心和缩放级别

我有一个lat长对列表.(或者我可以创建GeoJSON).我想在传单地图上映射它们.

如何找到我应该设置的中心和缩放级别,以便显示所有点.

所有的传单示例似乎都使用固定的中心和缩放,但我接受用户输入,所以我需要计算它们.

javascript gis openstreetmap leaflet

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

Leaflet - 如何自动删除以前的标记

以下javascript代码将允许在地图上的地图上创建标记,使用node.js/socket.io实时单击本地和全局.这很好,但每个添加的标记都可见.

像这个例子:http://jsfiddle.net/brettdewoody/LK35U/

现在,当第二标记已被添加到地图,我需要删除以前的标记(第一个)自动,再加入第三标记- >删除第二标记等.任何人都可以帮我理解如何做到这一点?也许和grouplayer一起?它是如何工作的?

// generate unique user id
var userId = Math.random().toString(16).substring(2,15);

var socket = io.connect('http://localhost:4000');
var doc = $(document);

// custom marker's icon styles
var tinyIcon = L.Icon.extend({
    options: {
        iconSize: [25, 39],
        iconAnchor:   [12, 36],
        shadowSize: [41, 41],
        shadowAnchor: [12, 38],
        popupAnchor: [0, -30]
    }
});
var anyIcon = new tinyIcon({ iconUrl: "assets/img/icon.png" });

var sentData = {}

var connects = {};
var markers = {};
var active = false;

// for …
Run Code Online (Sandbox Code Playgroud)

javascript node.js leaflet mapbox

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

将setBounds一次设置为两个不同的featureGroups mapbox传单?

我正在一张有两个要素图层的地图上工作。

var myFeatureGroup1 = L.featureGroup().addTo(map);
var myFeatureGroup2 = L.featureGroup().addTo(map);
Run Code Online (Sandbox Code Playgroud)

我正在设定界限,例如:

map.fitBounds(myFeatureGroup1.getBounds());
map.fitBounds(myFeatureGroup2.getBounds());
Run Code Online (Sandbox Code Playgroud)

但是出于明显的原因,myFeatureGroup2被设置为上界。这是使边界适合多个layerGroups的一种方法吗?像他们两个一样?有没有一种方法可以将它们合并到第三layerGroup中并适合其边界?

leaflet mapbox

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

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
查看次数

在Leaflet中显示来自geoj​​son的地图时设置缩放

我正在使用Leaflet.js在地图中显示geojson文件,我有以下代码:

// Set the map and the geojson as pointed in the tutorials
var geojsonLayer = new L.GeoJSON(null, {
    onEachFeature: function (feature, layer) {
        if (feature.properties) {
            var popupString = '<div class="popup">';
            for (var k in feature.properties) {
                var v = feature.properties[k];
                popupString += k + ': ' + v + '<br />';
            }
            popupString += '</div>';
            layer.bindPopup(popupString, {
                maxHeight: 200
            });
        }
    }
});
map.addLayer(geojsonLayer);

L.control.layers({'Road': road_layer, 'Satellite': satellite_layer}, {'GeoJSON': geojsonLayer}).addTo(map);
//...
// Load file and get …
Run Code Online (Sandbox Code Playgroud)

javascript zooming geojson leaflet

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

Leaflet:加载geoJSON文件和特定的PopUp

在Leaflet Tutorials(http://leafletjs.com/examples/geojson/)中,他们展示了如何将标记或特征与弹出窗口相关联 - 它可以包含HTML代码.

我希望用户能够使用URL指定要加载的特定弹出窗口.在Leaflet Tutorial中,URL http://leafletjs.com/examples/geojson/example.html 加载地图和功能 - 但在用户单击功能之前,不会显示任何弹出窗口.

有没有办法将URL(例如)http://leafletjs.com/examples/geojson/example.html#Coors%40Field 与特定功能相关联 ,以便在用户指定URL时自动显示?

javascript url popup leaflet

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

使用tmap在形状上弹出

我已经制作了一张地图,无法tmap在一个闪亮的应用程序中使用leaflet.我大致有我想要的东西:一个基于SpatialPolygonsDataFrame的填充颜色的专题地图,当你点击地图时,弹出一个关于多边形的额外信息.我想在点击时更改弹出窗口以获得更好的布局.默认情况下,会显示数据集中的名称,但它实际上并不是用户友好的.
这是一个可重复的例子.

library(tmap)
library(leaflet)

data(Europe)

tmap_mode("view")
carte <- tm_shape(Europe) +
  tm_borders(alpha = 0.5) +
  tm_fill(col = "well_being",
          id = "name",
          popup.vars = c("life_exp","well_being"))
tmap_leaflet(carte)
Run Code Online (Sandbox Code Playgroud)

我试图命名向量(popup.vars = c("Life Expectancy" = "life_exp", "Well being" = "well_being),但这不起作用.
我也尝试在调用时添加弹出窗口leaflet::addPolygons,但是我收到一条错误消息.

carte2 <- tm_shape(Europe) +
  tm_borders(alpha = 0.5) +
  tm_fill(col = "well_being")

nom <- Europe$name

tmap_leaflet(carte2) %>% 
  addPolygons(layerId = nom,
    popup = paste0("<b>",~name,"</b><br/>Life Expectancy : ",
                           ~life_exp," <br/>Well being : ", ~well_being))
Run Code Online (Sandbox Code Playgroud)

derivePolygons(data,lng,lat,missing(lng),missing(lat),"addPolygons")出错:找不到多边形数据; 请为addPolygons提供数据和/或lng/lat参数

谢谢

r popup leaflet tmap

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

列出Shiny,R的Leaflet map的所有可用字体真棒图标

我是一个Shiny App,我希望用户能够选择进入Awesome Marker的Font Awesome图标。

这是一个简单的应用程序,可让用户选择标记颜色,图标颜色和图标(名称)。

library(shiny)
library(leaflet)

icon_names <- c("home", "map-pin")

marker_colours <- list(Standard = c('red', 'orange', 'beige', 'green', 'blue', 'purple', 
                                    'pink', 'cadetblue', 'white', 'grey', 'black'),
                       Shades   = c('darkred', 'lightred', 'darkgreen', 'lightgreen', 
                                    'darkblue', 'lightblue', 'darkpurple', 'lightgray'))


server <- function(input, output) {

  output$map <- renderLeaflet({

    icons <- awesomeIcons(
      icon        = input$icon,
      iconColor   = input$icon_colour,
      library     = 'fa',
      markerColor = input$marker_colour
    )

    leaflet() %>% 
      addTiles() %>% 
      addAwesomeMarkers(lng            = 4.9, 
                        lat            = 52.38,
                        icon           = icons
      )
  })
}

ui <- fluidPage(
  sidebarLayout( …
Run Code Online (Sandbox Code Playgroud)

r leaflet font-awesome shiny

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

传单地图的使用政策是什么?

我想知道传单地图的使用政策。Leaflet基于OSM,但是有关Leaflet使用策略的文档在Leaflet和OSM中均不清楚。谢谢您的帮助!

openstreetmap leaflet

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