2013-03-05 12 views
17

Mam pewne problemy z wykorzystaniem geometrii na mapach google. Otrzymuję następujący błąd: "Nie można uzyskać właściwości" sferycznej "nieokreślonego lub zerowego odwołania."google.maps.geometry.spherical error

To jest kod z w3c z kilkoma dodatkami.

var x=new google.maps.LatLng(52.395715,4.888916); 
var stavanger=new google.maps.LatLng(58.983991,5.734863); 
var amsterdam=new google.maps.LatLng(52.395715,4.888916); 
var london=new google.maps.LatLng(51.508742,-0.120850); 
function initialize() 
{ 
var mapProp = { 
    center:x, 
    zoom:4, 
    mapTypeId:google.maps.MapTypeId.ROADMAP 
}; 

var map=new google.maps.Map(document.getElementById("googleMap"),mapProp); 
var myTrip=[stavanger,amsterdam,london]; 
var flightPath=new google.maps.Polyline({ 
    path:myTrip, 
    strokeColor:"#0000FF", 
    strokeOpacity:0.8, 
    strokeWeight:2 
    }); 
flightPath.setMap(map); 

try{ 
    var markerpos = google.maps.geometry.spherical.interpolate(flightPath.getAt(0), flightPath.getAt(1), .5); 
    // also tried // 
    //var Spherical = google.maps.geometry.spherical; 
    //var markerpos = Spherical.interpolate(flightPath.getAt(0), flightPath.getAt(1), .5); 
    //var markerpos = google.maps.geometry.spherical.interpolate(amsterdam, london, .5); 
} 
catch(ex){alert(ex);} 

var marker = new google.maps.Marker({position: markerpos, 
    map: map, clickable: false 
}); 
} 

Co jest nie tak z powyższym kodem?

+0

Czy załadować biblioteki geometrii? – Rick

Odpowiedz

58

Czy ładujesz correct library za pomocą parametru libraries=?

<script src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false&libraries=geometry"></script> 
+0

tak, mam to załadować !!! – Reven

+0

oups ... Miałem błąd składni !!! – Reven

+0

Dzięki, ten problem doprowadzał mnie do szału. Chociaż Mapy Google mają wszystkie narzędzia w "maps.googleapis.com/maps/api" i nie zdawałem sobie sprawy, że ta biblioteka nie jest zawarta domyślnie, jak powiedzieli w sekcji "Przegląd" w witrynie interfejsu API (https://developers.google.com/maps/documentation/javascript/geometry). Tęsknię za tymi szczegółami, gdy nie wiem, czego szukam. Musi być dodany jako "& bibliotek = geometria", jak mówisz. – Timbergus

0

Najpierw należy zaimportować moduły bibliotek, a następnie moduł klucza autoryzacji. Myślę, że tutaj problem występuje w momencie wykonywania funkcji bibliotecznych, importowanie modułów bibliotecznych nie jest zakończone. Jeśli najpierw zaimportujesz moduł kluczy autoryzacji, to co się stało, natychmiast wywołuje metodę initialize() przed upływem czasu ładowania modułów bibliotecznych. Musisz najpierw zaimportować moduły biblioteki, a następnie moduł auth.