javascript - 诺基亚/Ovi map 问题 - 标记的动态刷新

标签 javascript here-api

我在使用动态 Ovi/诺基亚 map 时遇到问题,我想每 30 秒重新加载一次标记 - 标记是从 XML 中读取的并且具有动态内容。除了气泡,一切正常。它仅在加载时显示,然后在第一次刷新时显示标记不再可单击(单击时更改为缩放)。我希望更新后的标记也能在气泡中显示最新的 html 内容:

<script> 
var markerCoords;
var mapContainer;
var container;
var myMap;
var bubbles=new Array();

// When the HTML page body section is loaded this function will be called.
// This function gets passed the marker XML data file name
var updateTime=30;   
var updateTime=1000*updateTime;
var markerUpdate=self.setInterval("placeMarkersOnMaps('geomarkers.xml')",updateTime);
function placeMarkersOnMaps(filename) 
{
var counter = 0;
$.ajax({
    type: "GET",
    url: filename ,
    dataType: "xml",
    success: parseXml,
              error : err
  });

}
function err (){
        alert("An Error has occurred.");
}

// Here we create an Nokia Maps within a Container.

mapContainer = document.getElementById("mapContainer");


myMap = nokia.maps.map,     
                map = new myMap.Display(mapContainer, {
                    center: [52.59, 13.3], zoomLevel: 2,
                    components: [ new myMap.component.Behavior(),
                                  new nokia.maps.map.component.ZoomBar(),
                                  new nokia.maps.map.component.Overview(),                             
                                  new nokia.maps.map.component.TypeSelector(),     
                                  new nokia.maps.map.component.ScaleBar()
                   ]
                });



  placeMarkersOnMaps('geomarkers.xml');






        function deleteMarker(coords) {
            var marker;
            for (i=0; i< map.objects.getLength(); i++) {
                if ( map.objects.get(i) instanceof nokia.maps.map.StandardMarker ) {
                    if ( coords.latitude ==  map.objects.get(i)..coords.latitude
                    && coords.longitude ==  map.objects.get(i)..coords.longitude ){
                        marker = map.objects.get(i);
                        marker.removeListener("click", function(evt) { infoBubbles.addBubble(evt.target.$html, evt.target.coordinate);}, false);;
                        map.objects.remove (marker);
                        break;
                    }
                }
            }
            return marker;
        }
function parseXml(xml)
{
    var infoBubbles = new nokia.maps.map.component.InfoBubbles();   
    map.addComponent( infoBubbles); 
    var container = new nokia.maps.map.Container();
    $(xml).find("marker").each(function(){

            //Read the name, address, latitude and longitude for each Marker
            var nme = $(this).find('name').text();
            var address = $(this).find('address').text();
            var lat = $(this).find('lat').text();
            var lng = $(this).find('lng').text();
            var zhtml = $(this).find('zhtml').text();
            var zcolor = $(this).find('zcolor').text();

            //Put each marker on the map as the data has been read.

            var markerCoords = new nokia.maps.geo.Coordinate(parseFloat(lat), parseFloat(lng));    

            var marker = new nokia.maps.map.StandardMarker(markerCoords, {text:nme, brush:{color:zcolor}, $html:zhtml});
            marker.addListener('click' ,  function(evt) { infoBubbles.addBubble(evt.target.$html, evt.target.coordinate);}, false); 
            container.objects.add(marker);      

        });
        // Add the marker container .
        map.objects.add(container);
        // Zoom into the markers.



}


</script>

最佳答案

看起来初始化信息气泡的行在错误的位置:

var infoBubbles = new nokia.maps.map.component.InfoBubbles();   
    map.addComponent( infoBubbles); 

应该放在行前

  placeMarkersOnMaps('geomarkers.xml');

否则,您将在每次运行 placeMarkersOnMaps() 时尝试添加一个信息气泡组件。通常只有一个。

您的 deleteMarkers 函数也可以替换为

 myMap.objects.clear();

关于javascript - 诺基亚/Ovi map 问题 - 标记的动态刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9212776/

相关文章:

javascript - 选择下拉菜单时如何更改标题文本

here-api - HERE 映射来自 chrome 的 SSL 响应

javascript - 限制诺基亚 map 的缩放(Javascript Api)

javascript - 有没有办法检测多段线是否在/不在此处 map api 的道路边界内?

javascript - 如何在javascript中制作模糊效果粒子

javascript - 将动态值与对象中的 object.keys 匹配

javascript - 访问环境变量时出现意外标记

html - 如何覆盖诺基亚基本搜索框输入样式?

android - 这里 map 3.3。如何获取当前用户位置街道名称?

javascript - 使用 javascript 黑莓应用程序启动默认/ native 浏览器