2
votes

I use v3 google map api, but when I click the marker on the map I see the following error message :

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

here's my code :

var markers = [];

var map;

var markerClusterer = null;

var load_ids = [];

var rectangle;

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

function 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;

}

function clearOverlays() {

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

}

function 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

}

function createMarker(object_id,markers,lat,lng,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;}

the error came up when script infowindow.open(map,marker); is executed

for example you can check http://cremp.solusi247.com/eways/en/search/map/index/, search using keyword 'Riyadh' on Address textbox. and click 1 house icon.

1
I can't see where you create "infowindow"Dr.Molle
infowindow, map is a global variable.Aditya Martin
please show your complete code or create a fiddle.Dr.Molle
I've add complete code, and also the url to the project.Aditya Martin
everything works as expected, no error-messages, the infoWindow appearsDr.Molle

1 Answers

2
votes

Be sure you have included the "infobox.js" script tag in your html page AFTER the google maps script tag, e.g.:

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

The "b.K" is just obfuscated output of your infowindow.open method call. If you are using GWT (Google Web Toolkit), in order to see some debug information, set the GWT compilation style to "Pretty" or "Detailed"; use "Obfuscated" style only when publishing. Also do not forget to enclose your code in:

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

while debugging to catch eventual JavaScript syntax errors.