Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图API上的标记不会显示在地理位置上_Javascript_Google Maps_Google Maps Api 3_Google Maps Markers_Google Places - Fatal编程技术网

Javascript 谷歌地图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

我正试图根据用户的地理位置在地图上标出位置。我知道地理定位是有效的,地图也显示了出来,但没有一个标记显示了当地的商业。我在控制台中也没有收到任何错误。我确保html中的脚本同时传递库和API键,但以防万一,下面是脚本:

<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