如何根据 JSON 数据中的 lat 和 long 使地图居中,当单击标记时,会弹出一个弹出窗口并在 vueJS 中显示名称?

Posted

技术标签:

【中文标题】如何根据 JSON 数据中的 lat 和 long 使地图居中,当单击标记时,会弹出一个弹出窗口并在 vueJS 中显示名称?【英文标题】:How can I able to center the map according to lat and long from JSON data and when click on markers, a pop up come and display the name in vueJS? 【发布时间】:2018-04-24 11:26:57 【问题描述】:

我用于获取 JSON 数据并显示地图的 vueJS 脚本是

<script> 
  new Vue( 
    el: '#feed' , 
    data:  
      data: [], 
    , 
    mounted()  
      this.$nextTick(function()  
        var self = this; 
        var id = window.location.href.split('=').pop() 

        //this code 
        var options =  
          zoom: 6, 
          center: new google.maps.LatLng(12.92, 77.25), // Centered 
          mapTypeId: google.maps.MapTypeId.ROADMAP, 
          mapTypeControl: false 
        ; 

        // Init map 
        var map = new google.maps.Map(document.getElementById('mapName'), options); 
        console.log(id) 
        $.ajax( 
          url: "https://n2s.herokuapp.com/api/post/get/10", 
          method: "GET", 
          dataType: "JSON", 
          success: function (e)  
            if (e.status == 1)  
              self.data = e.data; 
              console.log(e.data);  
              //use code 
              var i=0;    

              // Init markers 
              var marker = new google.maps.Marker( 
                position: new google.maps.LatLng(e.data.lat , e.data.lon), 
                map: map, 
                title: 'Click Me ' + i, 
              ); 

              // Process multiple info windows 
              (function(marker, i)  
                // add click event 
                google.maps.event.addListener(marker, 'click', function()  
                  infowindow = new google.maps.InfoWindow( 
                    content: e.data.lat 
                  ); 
                  infowindow.open(map, marker); 
                ); 
              )(marker, i);   
             else  
              console.log('Error occurred'); 
            , error: function() 
              console.log('Error occurred'); 
             
          ); 
        ) 
      , 
    ) 
 </script>

我需要根据 json 数据上显示的 lat 和 long 将地图居中,并且 此外,当我单击标记时,我需要在弹出窗口中显示名称。谁能帮我解决这个问题?

【问题讨论】:

还是没有运气?还在与谷歌地图集成进行详细说明? @WaldemarIce 是的,先生!我被卡住了 【参考方案1】:

我试图在你的代码中实现它

<script> 
  new Vue( 
    el: '#feed' , 
    data:  
      data: [], 
    , 
    mounted()  
      this.$nextTick(function()  
        var self = this; 
        var id = window.location.href.split('=').pop() 

        // Init map 
        var map;

         var myLatlng = new google.maps.LatLng(12.92, 77.25);
          function initMap() 

                   map = new google.maps.Map(document.getElementById('mapName'), 
                      center: myLatlng,
                      mapTypeId: google.maps.MapTypeId.ROADMAP, 
                      mapTypeControl: false,
                      zoom: 6
                  );
    

initMap();


        console.log(id) 
        $.ajax( 
          url: "https://n2s.herokuapp.com/api/post/get/10", 
          method: "GET", 
          dataType: "JSON", 
          success: function (e)  
            if (e.status == 1)  
              self.data = e.data; 
              console.log(e.data);  
              //use code 
              var i=0;    

              // Init markers 
              var marker = new google.maps.Marker( 
                position: new google.maps.LatLng(e.data.lat , e.data.lon), 
                map: map, 
                title: 'Click Me ' + i, 
              ); 

              // Process multiple info windows 
              (function(marker, i)  
                // add click event 
                 google.maps.event.addListener(marker, 'click', function () 
                 alert(e.data.bussinessName);
                 );
                  infowindow.open(map, marker); 
                ); 
              )(marker, i);   
             else  
              console.log('Error occurred'); 
            , error: function() 
              console.log('Error occurred'); 
             
          ); 
        ) 
      , 
    ) 
 </script>

【讨论】:

在我的脚本中哪里应用这些代码?你能建议吗 不,先生..上面没有做任何改变..我不能根据我的纬度和经度来居中地图..点击它时也会显示“点击我0” 先生,没有得到

以上是关于如何根据 JSON 数据中的 lat 和 long 使地图居中,当单击标记时,会弹出一个弹出窗口并在 vueJS 中显示名称?的主要内容,如果未能解决你的问题,请参考以下文章

根据 lat 和 long 得到错误的排序距离

尝试从我将 lat & long 数据放入的 URL 中获取 JSON 时脚本不起作用

根据当前地理位置 ios app javascript 从 lat / long 列表中返回值

laravel 如何通过 long 和 lat 找到附近的地方

如何将 pandas 列中的 JSON 数据转换为新列

有啥方法可以从作为 LAT/LONG 作为 PostGIS 中的地理数据类型插入的 GPS 坐标中恢复数据?