【问题标题】:Once again: TypeError: a.lat is not a function in google maps api再次:TypeError: a.lat is not a function in google maps api
【发布时间】:2016-03-10 01:53:16
【问题描述】:

在我们的网络应用程序中,我们有一个window 显示我们俱乐部办公室的位置。除了标记窗口不显示外,它工作正常。单击会产生可怕的 java 脚本错误“TypeError: a.lat is not a function”。

查看我意识到的此类问题的其他答案,坐标必须是 google.maps.LatLng 对象或文字。我几乎确信我遵守了这一点:

 var map = null;
 // Call this function when the page has been loaded
 function initialize()
 {
   if (arguments.callee.done) return;
     arguments.callee.done = true;
   var
     coord = { lat: 49.87216, lng: 8.63064 },
     mapOptions = {
       center: coord,
       zoom: 17,
       mapTypeId: google.maps.MapTypeId.ROADMAP,
       mapTypeControl: 1,
       mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
       scaleControl: 1,
       scaleControlOptions: {style: google.maps.ScaleControlStyle.DEFAULT, position: google.maps.ControlPosition.BOTTOM_RIGHT},
      navigationControl: 1,
      navigationControlOptions: {style: google.maps.ZoomControlStyle.ZOOM_PAN, position: google.maps.ControlPosition.RIGHT},
      position: google.maps.ControlPosition.BOTTOM_LEFT
   };
   map = new google.maps.Map(document.getElementById("map"), mapOptions);
   marker = new google.maps.Marker({
     title: "Fahrradbüro",
     position: coord,
     map: map
   });
   kartenFenster = new google.maps.InfoWindow(
   {
     content: '<div style="text-align: center"><img src="/static/images/images" alt="Fahrradbüro"/><br/>Fahrradbüro<br /></div>'
   });
   marker.addListener('click', function() {
     kartenFenster.open(map, marker);
   });
 }

但我仍然收到此错误。我在这里想念什么?我什至尝试过:

var coord = new google.maps.LatLng( 49.87216, 8.63064 );

感谢您的帮助!

【问题讨论】:

    标签: javascript google-maps google-maps-api-3 typeerror


    【解决方案1】:

    mapOptions的末尾删除这个:

    position: google.maps.ControlPosition.BOTTOM_LEFT
    

    API 还尝试访问 open() 中的 position 地图属性(请注意,open() 的第一个参数也可能是 StreetViewPanorama,它确实具有位置属性)导致错误的原因(因为这个属性不是 LatLng)。

    【讨论】:

    • 嘿,是的,就是这样!错误的线路是在“街景”出现之前从旧时代遗留下来的。非常感谢莫勒博士!
    【解决方案2】:

    var map;
     // Call this function when the page has been loaded
     function initialize()
     {
       if (arguments.callee.done) return;
         arguments.callee.done = true;
       var coord = new google.maps.LatLng( 49.87216, 8.63064 );
       var mapOptions = {
           center: coord,
           zoom: 17,
           mapTypeId: google.maps.MapTypeId.ROADMAP,
           mapTypeControl: 1,
           mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
           scaleControl: 1,
           scaleControlOptions: {style: google.maps.ScaleControlStyle.DEFAULT, position: google.maps.ControlPosition.BOTTOM_RIGHT},
          navigationControl: 1,
          navigationControlOptions: {style: google.maps.ZoomControlStyle.ZOOM_PAN, position: google.maps.ControlPosition.RIGHT},
          position: google.maps.ControlPosition.BOTTOM_LEFT
       };
       map = new google.maps.Map(document.getElementById("map"), mapOptions);
       marker = new google.maps.Marker({
         title: "Fahrradbüro",
         position: coord,
         map: map
       });
       kartenFenster = new google.maps.InfoWindow(
       {
         content: '<div style="text-align: center"><img src="/static/images/images" alt="Fahrradbüro"/><br/>Fahrradbüro<br /></div>'
       });
       marker.addListener('click', function() {
         kartenFenster.open(map, marker);
       });
      
     }
      google.maps.event.addDomListener(window, 'load',initialize);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
    <script src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false"></script>
    <div id="map" style="height:300px;width:400px"></div>

    请检查 sn-p。我添加了 id = "map" 的 div,坐标和 js 的变化很少。

    【讨论】:

      猜你喜欢
      • 2019-04-29
      • 2020-01-12
      • 2017-04-13
      • 1970-01-01
      • 2020-01-18
      • 2021-11-12
      • 2015-09-18
      • 2020-03-17
      • 2013-12-22
      相关资源
      最近更新 更多