Javascript 结合google places api和directions map api v3
我的页面中有以下代码(目前基于google示例)。 然而,我遇到了一个障碍,我似乎无法让地方工作(标记不会显示),这是我的代码…它应该显示用户位置10公里范围内的所有咖啡馆、餐厅和DAR,并使用地理位置,它还可以从用户当前位置向澳大利亚的达尔文提供方向 代码如下:Javascript 结合google places api和directions map api v3,javascript,html,google-maps-api-3,google-places-api,w3c-geolocation,Javascript,Html,Google Maps Api 3,Google Places Api,W3c Geolocation,我的页面中有以下代码(目前基于google示例)。 然而,我遇到了一个障碍,我似乎无法让地方工作(标记不会显示),这是我的代码…它应该显示用户位置10公里范围内的所有咖啡馆、餐厅和DAR,并使用地理位置,它还可以从用户当前位置向澳大利亚的达尔文提供方向 代码如下: <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scala
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Google Maps JavaScript API v3 Example: Directions Complex</title>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#map_canvas {
height: 650px;
}
#directions-panel {
height: 100%;
float: right;
width: 390px;
overflow: auto;
}
#map-canvas {
margin-right: 400px;
}
#control {
background: #fff;
padding: 5px;
font-size: 14px;
font-family: Arial;
border: 1px solid #ccc;
box-shadow: 0 2px 2px rgba(33, 33, 33, 0.4);
display: none;
}
@media print {
#map-canvas {
height: 500px;
margin: 0;
}
#directions-panel {
float: none;
width: auto;
}
}
.gmnoprint {display:none;}
</style>
<script src="https://maps.googleapis.com/maps/api/js?sensor=true&libraries=places"></script>
<script>
var directionDisplay;
var directionsService = new google.maps.DirectionsService();
var a;
var b;
var latandlon;
function initialize()
{
navigator.geolocation.getCurrentPosition(create_a_var);
}
function create_a_var(position)
{
a = position.coords.latitude;
b = position.coords.longitude;
latandlon = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
loadmapscript();
}
function loadmapscript() {
directionsDisplay = new google.maps.DirectionsRenderer();
var mapOptions = {
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: new google.maps.LatLng(a, b),
disableDefaultUI: true
};
var map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('directions-panel'));
var control = document.getElementById('control');
control.style.display = 'block';
map.controls[google.maps.ControlPosition.TOP].push(control);
var request = {
location: latandlon,
radius: 10000,
types: ['bar', 'restaurant', 'cafe']
};
}
function calcRoute() {
var start = latandlon;
var end = "Darwin, NT, Australia";
var request = {
origin: start,
destination: end,
travelMode: google.maps.DirectionsTravelMode.DRIVING,
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}
function createMarker(place) {
var placeLoc = place.geometry.location;
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location
});
google.maps.event.addListener(marker, 'click', function() {
alert(place.name);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="control">
<strong>Start:</strong>
<button id="start" onclick="calcRoute();">Click Me Please :)</button>
</div>
<div id="directions-panel"></div>
<div id="map_canvas"></div>
</body>
</html>
“map”是loadmapscript函数的局部变量。然后尝试在createMarker函数中引用它,该函数无权访问该变量。请将map改为全局变量 删除TravelMode行末尾的逗号。这将在Internet Explorer上引发错误:
var request = {
origin: start,
destination: end,
travelMode: google.maps.DirectionsTravelMode.DRIVING,
};
您有一个createMarker函数,但代码中没有任何内容调用该函数……因此没有标记。仍然没有,但感谢您的帮助,我使用safari和chrome实现此功能,不需要ie支持。我是javascript新手。:/ok:),虽然我对js非常失望,但这可能与您所说的无关:(,无论如何,非常感谢您的帮助:)您仍然没有任何东西调用您的createMarker函数-这就是为什么没有显示标记的原因
var request = {
origin: start,
destination: end,
travelMode: google.maps.DirectionsTravelMode.DRIVING,
};