2015-10-07 3 views
0

У меня есть элемент карты в сечении HTML-страницы с помощью Polymer 1,0 и листком-карта 1.0:Polymer 1,0/листовка-карта 1,0: широта/долгота не обновляется на события moveend

  <section data-route="Page"> 
      <div flex> 
       <my-maps id="mymap" flex></my-maps> 
      </div> 
     </section> 

Я пытаюсь для добавления события к элементу, который будет пропускать координаты центра/оси в окно консоли в любое время, как показано на примере: Polymer Leaflet demo

Проблема в том, что Lat/Длинные координаты не обновляются; Я вижу только центральные координаты стартовой центральной точки. Карта должна открываться изначально по центру с географической точкой, с маркером в этой точке. Я пытался добавить сценарий событий на главной странице индекса, и к регистрации элемента, как так:

<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> 

... Но я получаю тот же результат в обоих случаях; событие срабатывает, но только начальные координаты центральной точки передаются на консоль.

Вот 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> 

Я попытался добавить слушатель в листовке-карте тег, а также (на moveend), и я попытался переместить регистрацию внутри и снаружи dom-module, но тот же результат. Я добавил идентификатор к карте и назначил этот лат и длинный для этого экземпляра, как предлагает Рикки, но теперь точка геолокации перемещается в центр на каждой карте (там, где она должна оставаться на геолокационной точке.)

+1

Можете ли вы поделиться HTML-файлом своего элемента 'my-maps'? – Ricky

+0

Я добавил код выше. Это находится в отдельном html-файле ('my-maps.html') – JasonBK

+0

при этом я (вроде) решил проблему, но обнаружил еще одну проблему: если я заменил hard-code lat/long данными широты/долготы свойство привязки, центр lat/long корректно обновляется в консоли. Но теперь маркер центра также перемещается в новый центр. Я бы хотел, чтобы маркер оставался на геолокационной точке, но центр видимой карты обновлялся на событии перемещения. – JasonBK

ответ

0

Я по существу ответил на мой вопрос расширенного here. Мое решение включало в себя редактирование самого элемента листка-карты, добавив одноразовый слушатель для начальной широты и долготы, если задан геолокатором. Если геолокатор не работает, карта перемещается в положение по умолчанию. Я удалил свойство широты и долготы из тега элемента листа листка в моем пользовательском элементе карты.

1

Чтобы сделать маркер остается на географической локализации точки, но обновить центр со-ords, просто добавьте 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); 
} 
+0

Спасибо, это работает, если я жестко кодирую lat & long для начальной карты (с добавленным id). Но я хотел бы, чтобы карта была сосредоточена на геолокационной точке, передавая свойства широты и долготы. Если у меня есть это, добавление идентификатора ничего не изменит. также, если я также добавлю листок-лист во внутренний шаблон (вместе с маркером), он будет отображаться только в том случае, если у меня есть жестко закодированный лат и длинный элемент карты. – JasonBK

+1

Почему бы вам просто не установить привязку карты/долгое время на обратный вызов 'ready'? ('this. $. map.latitude = '...''). – Ricky

+0

Я не уверен, как это сделать ... как я могу передать свойство из геолокации в регистрацию для моей карты?Я попытался указать идентификатор элемента геолокации и передать свойство таким образом (это. $. Locate.latitude, с locate как id), но это не сработало. – JasonBK

Смежные вопросы