Javascript 谷歌地图API上的标记不会显示在地理位置上
我正试图根据用户的地理位置在地图上标出位置。我知道地理定位是有效的,地图也显示了出来,但没有一个标记显示了当地的商业。我在控制台中也没有收到任何错误。我确保html中的脚本同时传递库和API键,但以防万一,下面是脚本:Javascript 谷歌地图API上的标记不会显示在地理位置上,javascript,google-maps,google-maps-api-3,google-maps-markers,google-places,Javascript,Google Maps,Google Maps Api 3,Google Maps Markers,Google Places,我正试图根据用户的地理位置在地图上标出位置。我知道地理定位是有效的,地图也显示了出来,但没有一个标记显示了当地的商业。我在控制台中也没有收到任何错误。我确保html中的脚本同时传递库和API键,但以防万一,下面是脚本: <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=places&key=MY_KEY"></script> 这是我的Ja
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=places&key=MY_KEY"></script>
这是我的JavaScript
var map;
var infowindow;
var service;
function initialize() {
map = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 13,
mapTypeControl: false,
panControl: true,
panControlOptions: {
position: google.maps.ControlPosition.TOP_RIGHT
},
zoomControl: true,
zoomControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
},
scaleControl: true,
streetViewControl: false
});
// Start Geolocation
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = new google.maps.LatLng(position.coords.latitude,
position.coords.longitude);
var infowindow = new google.maps.InfoWindow({
map: map,
position: pos,
content: 'Found You!'
});
var request = {
location: pos,
radius: 500,
types: ['store']
};
infowindow = new google.maps.InfoWindow();
service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);
map.setCenter(pos);
}, function() {
handleNoGeolocation(true);
});
} else {
// Browser doesn't support Geolocation
handleNoGeolocation(false);
}
}
// Callback for Places
function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
var place = results[i];
createMarker(results[i]);
}
}
}
// Create Marker for Places
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() {
infowindow.setContent(place.name);
infowindow.open(map, this);
});
}
// Google Maps Error Flags
function handleNoGeolocation(errorFlag) {
if (errorFlag) {
var content = 'Error: The Geolocation service failed.';
} else {
var content = 'Error: Your browser doesn\'t support geolocation.';
}
var options = {
map: map,
position: new google.maps.LatLng(60, 105),
content: content
};
var infowindow = new google.maps.InfoWindow(options);
map.setCenter(options.position);
}
var映射;
var信息窗口;
var服务;
函数初始化(){
map=new google.maps.map(document.getElementById('map-canvas'){
缩放:13,
mapTypeControl:false,
泛控制:对,
全控选项:{
位置:google.maps.ControlPosition.TOP\u右
},
动物控制:对,
ZoomControl选项:{
位置:google.maps.ControlPosition.RIGHT\u CENTER
},
scaleControl:对,
街景控制:错误
});
//开始地理定位
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
var pos=新的google.maps.LatLng(position.coords.latitude,
位置坐标经度);
var infowindow=new google.maps.infowindow({
地图:地图,
职位:pos,,
内容:“找到你了!”
});
var请求={
地点:pos,,
半径:500,
类型:['store']
};
infowindow=new google.maps.infowindow();
服务=新的google.maps.places.PlacesService(地图);
服务.nearbySearch(请求、回调);
地图设置中心(pos);
},函数(){
手持导航(真);
});
}否则{
//浏览器不支持地理位置
手动定位(假);
}
}
//回拨地点
函数回调(结果、状态){
if(status==google.maps.places.PlacesServiceStatus.OK){
对于(var i=0;i
这是我的最新代码,我已经开始工作了。。我对标记进行了一些定制,但现在可以了。正如在评论中提到的,我相信这个问题与infowindow的变量集有关。我将地理位置更改为“infowindowLocation”,并在错误标志部分进行了调整
var map;
var infowindow;
var service;
function initialize() {
map = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 13,
mapTypeControl: false,
panControl: true,
panControlOptions: {
position: google.maps.ControlPosition.TOP_RIGHT
},
zoomControl: true,
zoomControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
},
scaleControl: true,
streetViewControl: false
});
// Start Geolocation
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = new google.maps.LatLng(position.coords.latitude,
position.coords.longitude);
var infowindowLocation = new google.maps.InfoWindow({
map: map,
position: pos,
content: 'Found You!'
});
var request = {
location: pos,
radius: 3218.69,
types: ['dentist']
};
infowindow = new google.maps.InfoWindow();
service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);
map.setCenter(pos);
}, function() {
handleNoGeolocation(true);
});
} else {
// Browser doesn't support Geolocation
handleNoGeolocation(false);
}
}
// Callback for Places
function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
var place = results[i];
createMarker(results[i]);
}
}
}
// Create Marker for Places
function createMarker(place) {
var placeLoc = place.geometry.location;
var image = 'img/flag.png';
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location,
title: place.name,
animation: google.maps.Animation.DROP,
icon: image
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(place.name);
infowindow.open(map,marker);
});
}
// Google Maps Error Flags
function handleNoGeolocation(errorFlag) {
if (errorFlag) {
var content = 'Error: The Geolocation service failed.';
} else {
var content = 'Error: Your browser doesn\'t support geolocation.';
}
var options = {
map: map,
position: new google.maps.LatLng(60, 105),
content: content
};
var infowindowLocation = new google.maps.InfoWindow(options);
map.setCenter(options.position);
}
initialize();
var映射;
var信息窗口;
var服务;
函数初始化(){
map=new google.maps.map(document.getElementById('map-canvas'){
缩放:13,
mapTypeControl:false,
泛控制:对,
全控选项:{
位置:google.maps.ControlPosition.TOP\u右
},
动物控制:对,
ZoomControl选项:{
位置:google.maps.ControlPosition.RIGHT\u CENTER
},
scaleControl:对,
街景控制:错误
});
//开始地理定位
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
var pos=新的google.maps.LatLng(position.coords.latitude,
位置坐标经度);
var infowindowLocation=new google.maps.InfoWindow({
地图:地图,
职位:pos,,
内容:“找到你了!”
});
var请求={
地点:pos,,
半径:3218.69,
类型:[“牙医”]
};
infowindow=new google.maps.infowindow();
服务=新的google.maps.places.PlacesService(地图);
服务.nearbySearch(请求、回调);
地图设置中心(pos);
},函数(){
手持导航(真);
});
}否则{
//浏览器不支持地理位置
手动定位(假);
}
}
//回拨地点
函数回调(结果、状态){
if(status==google.maps.places.PlacesServiceStatus.OK){
对于(var i=0;i