Google maps 奇怪的谷歌地图V2标记问题

Google maps 奇怪的谷歌地图V2标记问题,google-maps,Google Maps,获取此代码,仅在警报(markers.length)时有效;没有注释 当此javascript警报未显示时,我不会得到任何标记。。真奇怪 在body标签中,我有 通常会调用load()函数和其他函数: function showAddress(address) { if (geocoder) {//+', '+init_street geocoder.getLatLng(address, function(point) {

获取此代码,仅在警报(markers.length)时有效;没有注释

当此javascript警报未显示时,我不会得到任何标记。。真奇怪

在body标签中,我有

通常会调用load()函数和其他函数:

         function showAddress(address) {
           if (geocoder) {//+', '+init_street
    geocoder.getLatLng(address,
        function(point) {
                if (!point) {
                  document.getElementById("place").value="not found";
                  //alert(address + " not found");
                } else {
                //  document.getElementById("place").value=point.y.toFixed(4) + "," + point.x.toFixed(4);
                    map.setCenter(point, 16);
                    marker.setPoint(point);
                    //marker.openInfoWindowHtml(address);
                }
            }
    );
}
           }

         //from a point returns and address!
      function showPointAddress(response) {
  if (!response || response.Status.code != 200) {//not found
    //alert("Status Code:" + response.Status.code);
      document.getElementById("place").value="not found";
  } 
  else {//found
        map.setCenter(marker.getPoint(), 16);
        place = response.Placemark[0];
        document.getElementById("place").value=place.address;
        //document.getElementById("place").value=marker.getPoint().toUrlValue();
  }
         }


            // Creates a marker at the given point with the given number icon and text
          function createMarker(p,text) {
var marker = new GMarker(p);
if (text!=""){
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(text);});
      }
return marker;
      }


          ` var geocoder = null;`
          ` var map = null;`


      function load() {//loading the map
  if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.enableScrollWheelZoom();
        geocoder = new GClientGeocoder();

        if (init_street!=""){
            geocoder.getLatLng(init_street,function(point) {//set center point in map
                if (point){
                    map.setCenter(point, zoom);
                    map.addOverlay(createMarker(point,init_street));
                    map.openInfoWindow(point,init_street);
                }
            });
        }

        map.addControl(new GLargeMapControl());
        map.setMapType(G_NORMAL_MAP);           
  }
}`




function(data, responseCode) {
  if(responseCode == 200) {
        var texts = [];
        var addresses = [];       
        var xml = GXml.parse(data);
        var markers = xml.documentElement.getElementsByTagName("item");
        alert (markers.length);
        for (var i = 0; i < markers.length; i++) {  
            var address=markers[i].getElementsByTagName('address').item(0).childNodes.item(0).nodeValue;
            if (address!=null){
                //alert (address);
                var title=markers[i].getElementsByTagName('title').item(0).childNodes.item(0).nodeValue;
                var link=markers[i].getElementsByTagName('link').item(0).childNodes.item(0).nodeValue;
                var desc=markers[i].getElementsByTagName('description').item(0).childNodes.item(0).nodeValue;
                desc=desc.substr(0,220);//limit
                addresses.push(address);
                texts.push("<div style='width: 200px'><a target='_blank' href='" +link+"'>"+title+"</a><br />"+desc+"</div>");
            }//if
         }//for

        for (var i = 0; i < addresses.length; i++) { 
            geocoder.getLatLng(addresses[i], function (current) { 
                return function(point) { 
                    if (point) map.addOverlay(createMarker(point,texts[current]));    
                } 
            }(i)); 
        }

  }//if });
函数showAddress(地址){
如果(地理编码器){/+','+init_街
geocoder.getLatLng(地址:,
功能(点){
如果(!点){
document.getElementById(“place”).value=“未找到”;
//警报(地址+“未找到”);
}否则{
//document.getElementById(“place”).value=point.y.toFixed(4)+,“+point.x.toFixed(4);
地图设定中心(点16);
标记设定点(点);
//marker.openInfoWindowHtml(地址);
}
}
);
}
}
//从一个点返回和地址!
函数showPointAddress(响应){
如果(!response | | response.Status.code!=200){//未找到
//警报(“状态代码:+响应.状态.代码”);
document.getElementById(“place”).value=“未找到”;
} 
否则{//
map.setCenter(marker.getPoint(),16);
地点=响应。地点标记[0];
document.getElementById(“place”).value=place.address;
//document.getElementById(“place”).value=marker.getPoint().toUrlValue();
}
}
//使用给定的数字图标和文本在给定点创建标记
函数createMarker(p,text){
var标记=新的GMarker(p);
如果(文本!=“”){
addListener(标记“单击”,函数(){
marker.openInfoWindowHtml(文本);});
}
返回标记;
}
`var-geocoder=null`
`var-map=null`
函数load(){//加载映射
if(GBrowserIsCompatible()){
map=新的GMap2(document.getElementById(“map”);
map.enableCrollWheelZoom();
geocoder=新的GClientGeocoder();
如果(初始街道!=“”){
geocoder.getLatLng(init_street,函数(点){//在地图中设置中心点
如果(点){
地图设置中心(点、缩放);
地图添加覆盖图(createMarker(点,init_street));
地图:openInfoWindow(point,init_street);
}
});
}
addControl(新的GlargeMappControl());
setMapType(G_NORMAL_map);
}
}`
功能(数据、响应代码){
如果(响应代码==200){
var文本=[];
var地址=[];
var xml=GXml.parse(数据);
var markers=xml.documentElement.getElementsByTagName(“项”);
警报(标记。长度);
对于(var i=0;i”+desc+”);
}//如果
}//为了
对于(var i=0;i
我理解需要一个回调函数来加载标记的问题,但是我迷路了

谢谢你的帮助!!;)


高级Thx

这通常发生在使用Ajax或类似工具获取数据时。基本上,在获取数据时,需要使用回调函数等待数据。如果没有,则没有可执行的数据。但是,如果使用alert()暂停执行,则数据将在后台提取

可以将其视为在页面上执行Javascript之前等待DOM加载


我不能给你一个更好的答案,因为你没有包含调用你包含的函数的代码

我猜这是在一个
GDownloadUrl
调用之后。我看不出为什么一个仅仅延迟处理结果的警报会对
GDownloadUrl
产生影响。你有链接吗?或更多上下文(没有那么有用)?抱歉,还没有URL。。。是的,GdownloadUrl如下:
GdownloadUrl(“/rss/?category=&type=”,
在第一篇文章中没有复制…这返回:
GdownloadUrl(“/rss/?category=casa rural&type=1)”,
非常奇怪…我只需要触发一个警报,我的标记就会出现。好的..有意义...;)如果需要,我会查看并返回!!谢谢!!我更新了我的帖子,提供了更多信息…如果我得到任何回复,我将非常感谢…错过了你的回复,你还对更多信息感兴趣吗?