帮助阵列和谷歌地图API
我有我从教程使用其中谷歌地图API函数的位置标记在这里找到:Google Maps API with JQuery帮助阵列和谷歌地图API
以任何方式,我不得不修改JavaScript来占我的应用。我像之前一样从XML文件中提取标记,但这次我收到了多个请求,以及多个标准差,服务时间和这些请求的方法。我已经设置了XML,使其具有附加到标签的计数器,但它看起来不是正确地呈现到数组中。
请注意,我从来没有使用过Javascript,而且大部分时间都是在我的裤子上飞行,所以如果它是Javascript的暴行,请随时告诉我,XML的整个版本都在蟒蛇。 (我很抱歉,我不知道如何在堆栈溢出时显示<或>而不会将它简单地隐藏为标签。在每个“标记”“标记”“名称”“requestX”周围, “timetoserveX” 等是<和>在XML标记。
标记
标记
名Simpletown,CA /名称
request0 /资源//request0
timetoserve0 0.001秒服务请求/ timetoserve0
mean0 0.5309平均以秒/ mean0
std_dev0 0.552(秒)标准偏差/ std_dev0
request1 /资源2// request1
timetoserve1 0.015626秒以服务请求/ timetoserve1
mean1 0.0011平均以秒/ mean1
std_dev1在秒0.004465标准偏差/ std_dev1
/标记
/标记
MYMAP.placeMarkers = function(filename) {
$.get(filename, function(xml){
$(xml).find("marker").each(function(){
var name = $(this).find('name').text();
var count = 0;
var requeststring = 'request' + Integer.toString(count)
var request = new Array();
var timetoserve = new Array();
var mean = new Array();
var std_dev = new Array();
var timetoservestring = 'timetoserve' + Integer.toString(count);
var meanstring = 'mean' + Integer.toString(count);
var std_devstring = 'std_dev' + Integer.toString(count);
while ($(this).find(requeststring).text()){
timetoservestring = 'timetoserve' + Integer.toString(count);
meanstring = 'mean' + Integer.toString(count);
std_devstring = 'std_dev' + Integer.toString(count);
request[count] = $(this).find(requeststring).text();
timetoserve[count] = $(this).find(timetoservestring).text();
mean[count] = $(this).find(meanstring).text();
std_dev[count] = $(this).find(std_devstring).text();
count++;
requeststring = 'request' + Integer.toString(count)
}
// create a new LatLng point for the marker
var lat = $(this).find('lat').text();
var lng = $(this).find('lng').text();
var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
// extend the bounds to include the new point
MYMAP.bounds.extend(point);
var marker = new google.maps.Marker({
position: point,
map: MYMAP.map
});
var infoWindow = new google.maps.InfoWindow();
var html = ""
for (i=0;i<count;i++){
html=html+'<strong>'+name+'</strong.><br />'+request[i]+'<br />'+timetoserve[i]+'<br />'+mean[i]+'<br />'+std_dev[i]+<br />;
//var html='<strong>'+name+'</strong.><br />'+request+'</strong.><br />'+timetoserve+'</strong.><br />'+mean+'</strong.><br />'+std_dev;
}
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(html);
infoWindow.open(MYMAP.map, marker);
});
MYMAP.map.fitBounds(MYMAP.bounds);
});
});
}
有了更新,它不再拥有它看起来像的数组问题,即使我现在正在获取地图来渲染。 “显示标记”按钮没有用标记填充地图。用这种方式运行FireBug似乎只能为jQuery带来无数次的“Break on error”命中和警告。
var request[count] = $(this).find(requeststring).text();
var timetoserve[count] = $(this).find(timetoservestring).text();
var mean[count] = $(this).find(meanstring).text();
var std_dev[count] = $(this).find(std_devstring).text();
到
request[count] = $(this).find(requeststring).text();
timetoserve[count] = $(this).find(timetoservestring).text();
mean[count] = $(this).find(meanstring).text();
std_dev[count] = $(this).find(std_devstring).text();
- 假设这些是不是你正常工作的阵列。
如果我可以提一个建议(RE您的评论今天上午):
while ($(this).find(requeststring).text()){
//...omitted
}
如果你所有的标签重命名为同样的事情,给他们一个id属性(这是有效的XML)你可以这样做:
var requests = $(this).find('request');
var timetoserves = $(this).find('timetoserve');
// etc...
for (var i=0; i<requests.length; i++) {
request[i] = requests.eq(i).text();
timetoserve[count] = timetoserves.eq(i).text();
//etc...
}
这可能会提供更好的性能。
那是解决方案吗? (花了我一秒钟才注意到) – 2011-03-17 19:04:21
哇......真的吗?我无法相信我会双重初始化变量。谢谢你指出我。 – 2011-03-17 19:19:27
更新了该问题,我现在确实收到了“Google尚未定义”。 :( – 2011-03-17 19:22:35