2013-04-12 14 views
1

Я хотел бы получить карту с 2 маркерами. если я использую LatLng (см. JS Code/WORKS JUST FINE /) это не проблема ... но как только я попытаюсь использовать геокодирование (см. JS Code/YU NOT WORKING? /) он не работает , Я думаю, это все неправильно:API Карт Google v3 - Геокодирование

var adresse3 = geocoder.geocode ({'address': 'Winkelriedstrasse 47, 6004 Luzern'}) [0] .geometry.location;

Может кто-нибудь мне помочь. Спасибо вам заранее.

var myCenter=new google.maps.LatLng(47.050944,8.309441); 
var geocoder; 
var map; 
function initialize(){ 
    var mapProp = { 
     center   :myCenter   
    }; 
    var geocoder = new google.maps.Geocoder(); 
    var map = new google.maps.Map(document.getElementById("googleMap"),mapProp); 
    /*WORKS JUST FINE*/ 
    var marker1=new google.maps.Marker({ 
     position: new google.maps.LatLng(47.050944,8.309441) 
    }); 
    marker1.setMap(map); 
    var infowindow1 = new google.maps.InfoWindow({ 
     content:"marker1" 
    }); 
    google.maps.event.addListener(marker1, 'click', function() { 
     infowindow1.open(map,marker1); 
    }); 
    /*Y U NOT WORKING?*/ 
    var adresse3=geocoder.geocode({'address': 'Winkelriedstrasse 47, 6004 Luzern'})[0].geometry.location; 
    var marker3=new google.maps.Marker({ 
     position: adresse3 
    }); 
    marker3.setMap(map); 
    var infowindow3 = new google.maps.InfoWindow({ 
     content:"marker3" 
    }); 
    google.maps.event.addListener(marker3, 'click', function() { 
     infowindow3.open(map,marker3); 
    }); 
} 
google.maps.event.addDomListener(window, 'load', initialize); 
+0

Какую ошибку вы получаете? – Nicolas

ответ

0

вот как я решил его (я использовал GoMap PlugIn http://www.pittss.lv/jquery/gomap/)

<script type="text/javascript" src="js/jquery.gomap-1.3.2.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $(function(){ 
     $("#googleMap").goMap({ 
      address: 'Luzern, Schweiz', 
      zoom: 13, 
      maptype: 'ROADMAP', 
      mapTypeControl: false, 
      hideByClick: false 
     }); 
     $.goMap.createMarker({ 
      address: 'Winkelriedstrasse 47, 6004 Luzern', 
      html: 'Winkelriedstrasse 47, 6004 Luzern' 
     }); 
    }); 
}); 
</script> 

теперь он работает просто отлично ...

1

Ваша проблема заключается в том, что geocoder.geocode является асинхронным, так что вы должны пройти callback function.

Адаптировано из Google Maps Documentation:

geocoder.geocode({'address': 'Winkelriedstrasse 47, 6004 Luzern'}, function(results, status)  { 
    if (status == google.maps.GeocoderStatus.OK) { 
    map.setCenter(results[0].geometry.location); 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: results[0].geometry.location 
    }); 
    } else { 
    alert("Geocode was not successful for the following reason: " + status); 
    } 
}); 
0

Nicolas, вы указали ошибку в строке:

geocoder.geocode('address': 'Winkelriedstrasse 47, 6004 Luzern', function(results, status) 

использовать этот код:

geocoder.geocode({'address': 'Winkelriedstrasse 47, 6004 Luzern'}, function(results, status) 
Смежные вопросы