'Uncaught InvalidValueError: setContent: не строка; и ошибка [object Console] в Google Map

У меня есть следующая страница, на которой отображается карта Google с использованием API Карт Google.

<!DOCTYPE HTML>
<html>
    <head>
        <style type="text/css">
            #map{
                width:400px;
                height:400px;
                border:2px solid black;
                margin-top:20px;
            }
        </style>
    </head>
    <body>
        <div id="location">
            <p>Your location will be displayed here</p>
        </div>
        <div id="map"></div>
        <script>
            var map;
            var div = document.getElementById("location");
            window.onload = getMyLocation;
            function getMyLocation(){
                if(navigator.geolocation){
                    navigator.geolocation.getCurrentPosition(displayLocation,displayError);
                }else{
                    alert("Sorry, your browser does not support geolocation");
                }
            }

            function displayLocation(position){
                var latitude = position.coords.latitude;
                var longitude = position.coords.longitude;
                div.innerHTML = "You are at Latitude: "+latitude+", Longitude: "+longitude;
                showMap(position.coords);
            }
        
            function displayError(error){
                if(error.code==0){
                    div.innerHTML="An unknown error occurred.";
                }else if(error.code==1){
                    div.innerHTML="You denied the request for Geolocation.";
                }else if(error.code==2){
                    div.innerHTML="Location information is unavailable.";
                }else if(error.code==3){
                    div.innerHTML="The request to get user location timed out.";
                }
            }

            function showMap(coords){
                var googleLatAndLong = new google.maps.LatLng(coords.latitude,coords.longitude);
                var mapOptions = {
                    zoom:10,
                    center:googleLatAndLong,
                    maptypeId:google.maps.MapTypeId.ROADMAP
                };
                var mapDiv=document.getElementById("map");
                map = new google.maps.Map(mapDiv,mapOptions);
                var title="Your location";
                var content = "You are here: "+coords.latitude+", "+coords.longitude;
                addMarker(map,googleLatAndLong,title,console);
            }
        
            function addMarker(map,latlong,title,content){
                var markerOptions = {
                    position:latlong,
                    map:map,
                    title:title,
                    clickable:true
                };
                var marker = new google.maps.Marker(markerOptions);
        
                var infoWindowOptions = {
                    content:content,
                    position:latlong
                };
                var infoWindow = new google.maps.InfoWindow(infoWindowOptions);
                google.maps.event.addListener(marker,"click",function(){
                    infoWindow.open(map);
                });
            }
        
        </script>
        <script src="https://maps.google.com/maps/api/js?sensor=true"></script>
    </body>
</html>

Примечание. Фрагмент кода может не работать, поскольку SO блокирует запрос API геолокации.

Когда я загружаю страницу, карта отображается правильно с маркером, но когда я нажимаю на маркер, ничего не происходит (он должен отображать окно), и консоль JS выдает следующую ошибку

Uncaught InvalidValueError: setContent: не строка; и [консоль объекта]

Я читал похожие сообщения, и кажется, проблема в том, что какое бы значение ни имел Content, это не строка. Здесь объявлена ​​единственная переменная содержимого

var content = "You are here: "+coords.latitude+", "+coords.longitude;
addMarker(map,googleLatAndLong,title,console);
}
        
function addMarker(map,latlong,title,content){
    var markerOptions = {
        position:latlong,
        map:map,
        title:title,
        clickable:true
    };
    var marker = new google.maps.Marker(markerOptions);
        
    var infoWindowOptions = {
        content:content,

Я попытался преобразовать coords.latitude и coords.longitude в строки (не в этой версии кода), и это не имело значения.

Любые идеи о том, что вызывает это? Код взят из программы Head First HTML5, и они вообще не упоминают об этой проблеме.


person CommonCoreTawan    schedule 28.10.2014    source источник


Ответы (1)


Это была синтаксическая ошибка

я имел

addMarker(карта,широта и долгота google,название,консоль);

должно быть

addMarker(карта,широта и долгота google,название,контент);

Не уверен, откуда у меня «консоль».

person CommonCoreTawan    schedule 28.10.2014