API v3: проблема со службой геокодирования в Firefox 6.0 / IE 9.0

#google-maps-api-3 #geocoding #google-geocoding-api

#google-maps-api-3 #геокодирование #google-geocoding-api

Вопрос:

Я создал код для добавления нескольких маркеров и информационных окон с помощью службы геокодирования. Я скопировал метод из документов API v3. Мой скрипт извлекает информацию об адресе из ASP.Чистый веб-сервис и записывает их в скрытый элемент div.

       function codeAddress(address) 
  {
    //Get the location information from address
    geocoder.geocode( { 'address': address}, function(results, status) 
            {
                if (status == google.maps.GeocoderStatus.OK) 
                {
                    //Add a google marker onto the given address
                    var marker = new google.maps.Marker({
                            map: map,
                            animation: google.maps.Animation.DROP,
                            position: results[0].geometry.location
                    });

                //Prepare a infoWindow to display complete address
                var faddress = "<h4>Office Address:</h4><span>"   address   "</span>";
                var infowindow = new google.maps.InfoWindow({content: faddress});

                //Opening information window on mouseover event of marker
                google.maps.event.addListener(marker, 'mouseover', function(){
                    infowindow.open(map, marker);
                    }); 

                //closing the info window when mouse is moved out of marker
                google.maps.event.addListener(marker, 'mouseout', function(){
                    infowindow.close();
                    }); 

                } 
    });       
  }
  

Следующий фрагмент кода считывает адрес из скрытых элементов div и добавляет маркер вместе с InfoWindows. Этот код отлично работает с Internet Explorer 7.0 / 8.0.

   //Populate the result onto div element
  $.each(arr,function(index, item){
    $(".result").append("<div class='block'>"   item   "</div>");                
  });

  //Loop through the div element and add marker to map
  $(".block").each(function(){
        codeAddress($(this).text());
   })
  

Но тот же код не работает, когда я открываю его в Firefox 6.0 / IE 9.0.

Служба геокодирования возвращает ZERO_RESULTS для того же вызова. Когда я вызываю метод 5 раз с одним и тем же адресом, он может добавлять маркеры.

Есть идеи, есть ли у службы геокодирования проблемы с новыми браузерами?

Заранее спасибо…

Судхир

Комментарии:

1. В дополнение к этому я создал блоки DIV с адресом и добавлением маркера при щелчке DIV. Это отлично работает в IE 8.0, но не работает в Firefox 6.0. есть идеи, что происходит, как Google Maps API v3 может вести себя по-разному в зависимости от браузера?

Ответ №1:

это код, который я использую для создания карт, вы можете использовать его и настроить в соответствии с вашими потребностями:

         var address = document.getElementsByTagName('address')[0].innerHTML;
        var title = document.getElementById('contact').getElementsByTagName('h2')[0].innerHTML;
        var geocoder;
        var map;
        geocoder = new google.maps.Geocoder();
        geocoder.geocode({ 'address': address },
        function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                var myOptions = {
                    zoom: 15,
                    center: results[0].geometry.location,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                }
                map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
                var marker = new google.maps.Marker({
                    map: map,
                    position: results[0].geometry.location,
                    title: title
                });
            } else {
                alert("Geocode was not successful for the following reason: "   status);
            }
        });