Google Map V3 Infowindow.open ошибка - PullRequest
2 голосов
/ 31 января 2012

Я использую v3 google map api, но когда я нажимаю на маркер на карте, я вижу следующее сообщение об ошибке:

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, маркеры, 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;}

ошибка возникла, когда скрипт infowindow.open(map,marker); выполняется

, например, вы можете проверить http://cremp.solusi247.com/eways/en/search/map/index/, поиск по ключевому слову 'Эр-Рияд в текстовом поле Адрес.и нажмите 1 значок дома.

1 Ответ

2 голосов
/ 02 мая 2012

Убедитесь, что вы включили тег сценария "infobox.js" в свою HTML-страницу ПОСЛЕ тег сценария Google Maps, например:

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

"b.K" - это просто запутанный вывод вашего вызова метода infowindow.open. Если вы используете GWT (Google Web Toolkit), чтобы увидеть некоторую отладочную информацию, установите стиль компиляции GWT на «Довольно» или «Подробно»; Используйте стиль «Запутанный» только при публикации. Также не забудьте вложить свой код в:

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

при отладке для обнаружения возможных синтаксических ошибок JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...