我正在使用Sencha Touch开发波士顿大学的移动版公交车追踪器。我遇到的问题是google.maps.Marker的方法setPosition()没有在Safari或任何移动浏览器中呈现位置更改。
代码设置如下:
我已经验证(我认为)每次标记数组中的标记都会获得新位置。此外,在Chrome和Firefox中,我的公共汽车移动(如预期的那样),但在Safari和iPhone / Android浏览器中,没有任何动作。
以下是代码段:
var markers = {};
var busesFunc = function()
{
Ext.util.JSONP.request({
url: 'http://m.cms-devl.bu.edu/rpc/bus/livebus.json.php',
callbackKey: 'callback',
params: {
},
callback: function(data) {
buses = data.ResultSet.Result;
for (var i = 0, ln = buses.length; i < ln; i++) {
var bus = buses[i];
var position = new google.maps.LatLng(bus.lat, bus.lng);
if(!markers[bus.id])
{
markers[bus.id] = new google.maps.Marker({
map: map.map,
title: 'hello',
clickable: true,
draggable: false,
position: position,
icon: "images/bg.png",
zIndex: 100
});
}
markers[bus.id].setPosition(position);
//markers[bus.id].setIcon("images/bg.png");
//markers[bus.id].setMap(map.map);
//markers[bus.id].setMap(map.map);
if(bus.lat != markers[bus.id].position.lat() || bus.lng != markers[bus.id].position.lng())
{
console.log(bus.id + " " + bus.lat + " " + bus.lng);
console.log(bus.id + " " + markers[bus.id].position.lat() + " " + markers[bus.id].position.lng());
}
}
}
});
}
setInterval(busesFunc, 5000);
您可以在此处查看示例:http://www.bu.edu/nisdev/students/luiscarr/liveBusMobile/
整个javascript被称为functions.js(我不能发布多个链接)
答案 0 :(得分:0)
[Sencha Person]标记未显示是0.93测试版中的已知错误。 0.94版本(当前版本)已修复此问题。
答案 1 :(得分:0)
通过每个间隔发出一个唯一请求来解决问题。经过一些调试后,我认为这是一个缓存问题。所以我在JSONP请求中添加了一个timestamp参数,并且它都已修复。