유성우 애플리케이션에 맵을 표시하는 템플리트가 있습니다. 이 템플릿은 두 가지에 사용됩니다 :meteor.js에서 다른 데이터와 동일한 템플리트 사용
- 표시가지도
- 디스플레이는 사용자가 선택하면 특정 장소의 개별 위치에 내 응용 프로그램의 검색 결과를 하나의
가 현재 내 코드는 다음 (나는이 템플릿에 대한 다른 기능이나 도우미가 없다) :
Template.map.rendered = function() {
if(!map)
var map = new Course_map('#map');
Deps.autorun(function(){
if (Session.get("current_place")){
var places = Places.find(Session.get("current_place")).fetch();
}
else{
var places_cursor = get_searched_places();
if (places_cursor){
var places = places_cursor[0].fetch();
var places_id = _.pluck(places,'_id');
//Remove the markers that are no longer in the places_id array
map.remove_markers(places_id);
}
}
if(places){
// Add all the marker in places
for(var i = 0, places_length = places.length; i < places_length; i ++){
map.add_marker(places[i]);
}
// Recenter the map to focus on the marker area
map.calc_bounds();
}
});
};
내지도 템플릿 :
<template name="map">
<div id="map" class='google-map'>
</div>
는 사용자에 Session.get ("current_place")로 장소를 선택 여부에 따라 나는 변수 내 장소에서 서로 다른 정보를로드합니다.
나는 그 디자인이 마음에 들지 않아 내가하고 싶은 일을 할 수있는 더 좋은 방법을 찾을 수 있다고 생각합니다. 의견 있으십니까 ?
귀하의 솔루션은 나에게 잘 보이는 @Itbesh. 내가 싫어하는 유일한 것은'map' 변수의 정의입니다. 이 객체를 템플릿에 꼭 붙이고 싶다면'this.map' (또는'this._map', [here] (http://docs.meteor.com/#template_inst) 참조)을 사용해야한다고 생각합니다 instacne이지, 지역 범위가 아니다. 내가 맞습니까? –
@ Tomasz : 귀하의 의견을 보내 주셔서 감사합니다. 내 템플릿을 표시하기 위해 내 게시물을 편집하고 렌더링 된 코드가이 템플릿의 유일한 코드임을 정확하게 설명합니다. 그래서 저는 이것을 사용하지 않습니다. 맵을 필요로했기 때문에 맵을 만들었습니다. 그렇지 않으면 어떻게할까요? – ltbesh
당신이 말한 바로는 당신이 코드의 다른 곳에서이'map' 객체에 접근해야한다고 가정하기 때문에 아마 전역 적으로 정의되었을 것입니다, 맞습니까? 그럼 왜'var' 접두사를 사용하고 있습니까? 'var' 접두사가 붙은 변수는 지역적으로 만 정의 될 것이므로 전역'map'은 변경되지 않고'if (! map)'조건은 사실 항상 만족됩니다. 사실 각'render' 이벤트에 대해'Course_map'의 새로운 인스턴스를 생성하고 있습니다 만, 당신이 원하는 것은 아닌 것으로 가정합니다. –