Ответ 1
Переместите слушателя в функцию инициализации.
Вот слушатель, который я добавляю -
var map;
var geocoder;
function initialize() {
var myOptions = {
zoom: 8,
center: new google.maps.LatLng(22, 88),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
}
//google.maps.event.addDomListener(window, 'load', initialize);
google.maps.event.addListener(map, 'click', function(event) {
geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'latLng': event.latLng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
alert(results);
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
});
Но это порождает эту ошибку в консоли -
Uncaught TypeError: Cannot read property '__e3_' of undefined
Ke
Ie
R.addListener
(anonymous function)
Пробовал поиск. Но не получил решения.
Переместите слушателя в функцию инициализации.
Трудно сказать лишь небольшую часть вашего кода, но похоже, что он не может найти "карту".
Либо ваша переменная карты не является глобальной, либо каким-либо образом доступна этим кодом ИЛИ карта не была создана с помощью:
map = new google.maps.Map(....)
прежде чем пытаться добавить нового прослушивателя.
Я не знаю, может ли это быть проблемой для вас, поскольку мы не видим часть вашего кода, где вы ссылаетесь на библиотеку карт google, но я только что обнаружил причину, по которой я получал эту ошибку, от пытаясь включить библиотеку "визуализации". К счастью, мне больше не нужно было его использовать.
У меня было это:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry,visualization&sensor=true"></script>
и изменил его на следующее:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry&sensor=true"></script>
Я больше не получаю ошибку e3.
Кстати, эта ошибка для меня не была последовательной, и я не мог понять, как ее реплицировать. Мне пришлось сидеть и снова нажимать обновление, пока не произойдет ошибка.
Я надеюсь, что это поможет кому-то.
Это происходит при загрузке ваших данных асинхронно. Вы можете избежать этого, включив код document.ready в функцию ajaxStop
$().ready(function() {
$(document).ajaxStop(function () {
/* your code here ?*/
});
});
В моем случае это было то, что глобальная переменная карты была перезаписана в инициализаторе, но я хотел использовать эту глобальную переменную в другой функции, и это вызвало проблему.
Да, во-вторых, что... Переменная карты должна быть объявлена вне и до ее использования. Поскольку слушатель Google Maps не может его найти.
Что-то вроде этого?
var lati,longt; //contains latitude and longitude
func newLatLOng(){
get new value of latLong
initMap();
}
var map = 0;
function initMap() {
if (map ===0)
{
//load first time
lati= 28.5072216;
longt= 77.4971153;
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: lati, lng: longt},
zoom: 13
});
}else
{
var geolocation = { lat:lati,
lng: longt };
google.maps.event.trigger(map, 'resize');
map.setCenter(geolocation);
}