因此,我编写了这段代码,它将普通地址转换为地理位置,并从您的 gps 位置(phonegap 位置、html5 位置或任何 latlng)返回地图和方向。该函数在 phonegap 或 html5 位置成功时被调用。
此代码在浏览器中工作正常,但失败并显示:错误:TypeError:'undefined' is not an object in file://bla bla at line 761
第 761 行 = geocoder.geocode ( { 'address': address }, function(results, status) {
所以我检查了我所有的变量,它们不像在线版本那样为空,并且返回 div 存在。所以我猜到谷歌的地理定位器链接有问题。
有趣的是,它显示的是地图而不是方向。它标志着你需要去的地方,而不是你所在的地方。好像只是方向没有加载或其他东西。
var directionDisplay;
var directionsService = new google.maps.DirectionsService();
function bring_me_back(call_back_map,call_back_directions,address,position) {
var latlng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude); // your location
directionsDisplay = new google.maps.DirectionsRenderer();
var myOptions = {
zoom: 14,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: true
};
var map = new google.maps.Map(document.getElementById(call_back_map),myOptions);
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById(call_back_directions));
var marker = new google.maps.Marker({
position: latlng,
map: map,
title:"My location"
});
// find the address
var geocoder = new google.maps.Geocoder (map);
geocoder.geocode ( { 'address': address }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var end = results [0].geometry.location;
map.setCenter(results [0].geometry.location);
marker.setPosition(results [0].geometry.location);
var start = latlng; // your gps location
var request = {
origin:start,
destination:end,
travelMode: google.maps.DirectionsTravelMode.WALKING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
} else alert("Directions was not successful for the following reason: " + status);
});
}
else {
$('#'+call_back).html("Geocode was not successful for the following reason: " + status);
}
});
}
我调用谷歌的方式(在我使用这段代码之前,它有足够的时间来加载和“初始化”被调用)。
function loadGoogleScript() {
if(!(navigator.network.connection.type == Connection.NONE)) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://maps.google.com/maps/api/js?v=3.6&sensor=false&callback=initialize';
document.body.appendChild(script);
return true;
}
else {
return false;
}
}
API 的反馈是有限的,所以我不能再做任何事情了。