2012-01-31 69 views
2

我使用V3的谷歌地图API,但是当我点击地图上我看到了以下错误消息上的标记:谷歌地图V3 Infowindow.open错误

b.K is not a function (72 out of range 43)

这里是我的代码:

var markers = [];

var map;

var markerClusterer = null;

var load_ids = [];

var rectangle;

var infowindow = new google.maps.InfoWindow();

功能showAddress(xaddress,xzoom){

clearOverlays(); 
    $("#div_item_list").html(""); 
    $('#map_canvas2').gMap({ address: xaddress, zoom:xzoom, 
     onComplete: function() { 

      //marker from address 
      geocoder = new google.maps.Geocoder(); 
      geocoder.geocode({'address': xaddress}, function(results, status) { 
       if (status == google.maps.GeocoderStatus.OK) { 
        map.gMap('addMarker', { 
         key: 'mainMarker', 
         latitude: results[0].geometry.location.lat(), 
         longitude: results[0].geometry.location.lng(), 
         popup: true 
        }); >map_search(results[0].geometry.location.lat(),results[0].geometry.location.lng()); 
        map.data('gmap').gmap.setCenter(results[0].geometry.location); 
        //clearOverlays(); 
       } 
       else { 
        alert("Geocoder failed due to: " + status); 
       } 
      }); 
     } 
    }); 
    return false; 

}

功能提供clearOverlays(){

if (markers) { 
    for (i in markers) { 
    markers[i].setMap(null); 
    } 
} 
if(markerClusterer){ 
    markerClusterer.clearMarkers(); 
} 

}

功能map_search(LAT,LON){

$("#div_item_list").html('<img src="images/loader.gif"/>'); 
    $.ajax({ 
    url: "search/map/find_item", 
    type: "POST", 
    dataType: "json", 
    data: "lat="+lat+"&lon="+lon, 
    success: function(msg){ 
     if (msg.length > 0) { 
      //add marker on gmap 
      markers = []; 
      $.each(msg, function(item) { 
        load_ids.push(msg[item]['id_item']); 
        html_data = '<b>' + msg[item]['code'] + ' ('+ msg[item]['case_transtype'] +')</b><br/>' + 
          'Address: ' + msg[item]['address_name']; 
        var marker = createMarker(msg[item]['id_item'],markers,msg[item]['lat'],msg[item]['lon'],html_data); 
        markers.push(marker); 

      }); 

      markerClusterer = new MarkerClusterer(map.data('gmap').gmap, markers); 
      load_grid2(lat,lon); 
      load_listener(); 

     } 
     else { 
      $("#div_item_list").html("Empty"); 
     } 
    } 
    });//end ajax 

}

功能createMarker(OBJECT_ID,标志,纬度,经度,html_data){

var _gicon = { 
     image: 'images/item.png', 
     iconSize: new google.maps.Size(32, 32), 
     iconAnchor: new google.maps.Point(12, 46) 
    }; 
    gicon = new google.maps.MarkerImage(_gicon.image, _gicon.iconSize, null, _gicon.iconAnchor); 
    var latLng = new google.maps.LatLng(lat,lng); 
    var marker = new google.maps.Marker({ 
     'position': latLng, 
     'icon': gicon 
    }); 

    google.maps.event.addListener(marker, 'click', function(){ 
     infowindow.close(); 
     infowindow.setContent(html_data); 
     infowindow.open(map,marker); 
     //change screen 
     $('#point_show_'+object_id).addClass("ui-state-hover"); 
     $('#point_show_'+object_id).trigger("focus"); 
    }); 
    return marker;} 

当脚本infowindow.open(map,marker);执行

,例如,你可以检查错误想出了http://cremp.solusi247.com/eways/en/search/map/index/,在地址文本框中使用关键字“利雅得”进行搜索。并点击1房屋图标。

+1

我看不到你在哪里创建“infowindow” – 2012-01-31 11:13:36

+0

infowindow,map是一个全局变量。 – 2012-01-31 11:43:31

+0

请显示您的完整代码或创建一个小提琴。 – 2012-01-31 12:09:02

回答

2

要确保你已经包括在你的HTML 页面中的“infobox.js”脚本标记之后谷歌地图脚本标签,如:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"></script> 
<script type="text/javascript" src="infobox.js"></script> 

的“BK”只是混淆你的信息窗口的输出.open方法调用。如果您使用的是GWT(Google Web Toolkit),为了查看一些调试信息,请将GWT编译风格设置为“漂亮”或“详细”;仅在发布时使用“混淆”风格。另外不要忘记附上你的代码:

try { 
    ... 
} catch(ex) { 
    alert(ex.message); 
} 

在调试时可以捕捉到最终的JavaScript语法错误。