Polymer 1.0 / leaflet-map 1.0: lat/long 不在 moveend 事件上更新
Polymer 1.0 / leaflet-map 1.0: lat/long not updating on moveend event
我在使用 Polymer 1.0 和 leaflet-map 1.0 的 HTML 页面的一部分中有一个地图元素:
<section data-route="Page">
<div flex>
<my-maps id="mymap" flex></my-maps>
</div>
</section>
我正在尝试向元素添加一个事件,该事件将在平移地图时将中心坐标的 lat/long 传递给控制台 window,类似于 'event'此处给出的示例:Polymer Leaflet demo
问题是Lat/Long坐标没有更新;我只看到起始中心点的中心坐标。地图应该最初以地理定位点为中心打开,并在该点上有一个标记。
我已经尝试将事件脚本添加到主索引页面,并添加到元素注册中:
<script>
Polymer({
is: "my-maps",
ready: function () {
L.Icon.Default.imagePath="../../bower_components/leaflet/dist/images";
},
listeners:{
'moveend': 'testmove'
},
testmove: function(e){
var text = "Center: " + this.latitude.toFixed(9)
+ ", " + this.longitude.toFixed(9);
console.log(text);
}
});
</script>
...但是我在这两种情况下得到的结果相同;事件触发,但只有初始中心点坐标被传递到控制台。
这是 my-maps 元素的 HTML:
<dom-module id="my-maps">
<style>
:host {
height: 100%;
width:100%;
overflow:hidden;
}
leaflet-map {
position:absolute;
height: 900px;
width:100%;
overflow:hidden;
}
</style>
<template>
<leaflet-map latitude="{{latitude}}" longitude="{{longitude}}" zoom="14">
<leaflet-geolocation enable-high-accuracy latitude="{{latitude}}" longitude="{{longitude}}">
</leaflet-geolocation>
<template is="dom-if" if="{{latitude}}">
<leaflet-marker latitude="{{latitude}}" longitude="{{longitude}}">
</leaflet-marker>
</template>
</leaflet-map>
</template>
(Polymer registration here)
</dom-module>
我也尝试将侦听器添加到 leaflet-map 标记中(移动结束时),我尝试将注册移动到 dom-module 元素的内部和外部,但结果相同。我向地图添加了一个 id,并按照 Ricky 的建议将经纬度分配给该实例,但现在地理位置点移动到每个地图平移的中心(它应该保留在地理定位点上。)
要使标记停留在地理定位点上,但更新中心坐标,只需将 id
添加到 leaflet-map
并获取 latitude
和 longitude
属性:
<leaflet-map id="map">
...
testmove: function(e) {
var text = 'Center: ' + this.$.map.latitude.toFixed(9)
+ ', ' + this.$.map.longitude.toFixed(9);
console.log(text);
}
我基本上回答了我的扩展问题 。我的解决方案涉及编辑 leaflet-map 元素本身,通过为地理定位器提供的初始纬度和经度添加一次性侦听器。如果地理定位器失败,地图将平移到默认位置。我从自定义地图元素的 leaflet-map 元素标签中删除了纬度和经度 属性。
我在使用 Polymer 1.0 和 leaflet-map 1.0 的 HTML 页面的一部分中有一个地图元素:
<section data-route="Page">
<div flex>
<my-maps id="mymap" flex></my-maps>
</div>
</section>
我正在尝试向元素添加一个事件,该事件将在平移地图时将中心坐标的 lat/long 传递给控制台 window,类似于 'event'此处给出的示例:Polymer Leaflet demo
问题是Lat/Long坐标没有更新;我只看到起始中心点的中心坐标。地图应该最初以地理定位点为中心打开,并在该点上有一个标记。 我已经尝试将事件脚本添加到主索引页面,并添加到元素注册中:
<script>
Polymer({
is: "my-maps",
ready: function () {
L.Icon.Default.imagePath="../../bower_components/leaflet/dist/images";
},
listeners:{
'moveend': 'testmove'
},
testmove: function(e){
var text = "Center: " + this.latitude.toFixed(9)
+ ", " + this.longitude.toFixed(9);
console.log(text);
}
});
</script>
...但是我在这两种情况下得到的结果相同;事件触发,但只有初始中心点坐标被传递到控制台。
这是 my-maps 元素的 HTML:
<dom-module id="my-maps">
<style>
:host {
height: 100%;
width:100%;
overflow:hidden;
}
leaflet-map {
position:absolute;
height: 900px;
width:100%;
overflow:hidden;
}
</style>
<template>
<leaflet-map latitude="{{latitude}}" longitude="{{longitude}}" zoom="14">
<leaflet-geolocation enable-high-accuracy latitude="{{latitude}}" longitude="{{longitude}}">
</leaflet-geolocation>
<template is="dom-if" if="{{latitude}}">
<leaflet-marker latitude="{{latitude}}" longitude="{{longitude}}">
</leaflet-marker>
</template>
</leaflet-map>
</template>
(Polymer registration here)
</dom-module>
我也尝试将侦听器添加到 leaflet-map 标记中(移动结束时),我尝试将注册移动到 dom-module 元素的内部和外部,但结果相同。我向地图添加了一个 id,并按照 Ricky 的建议将经纬度分配给该实例,但现在地理位置点移动到每个地图平移的中心(它应该保留在地理定位点上。)
要使标记停留在地理定位点上,但更新中心坐标,只需将 id
添加到 leaflet-map
并获取 latitude
和 longitude
属性:
<leaflet-map id="map">
...
testmove: function(e) {
var text = 'Center: ' + this.$.map.latitude.toFixed(9)
+ ', ' + this.$.map.longitude.toFixed(9);
console.log(text);
}
我基本上回答了我的扩展问题