【问题标题】:Google Maps marker only show marker in specific field谷歌地图标记仅在特定字段中显示标记
【发布时间】:2017-04-21 11:34:41
【问题描述】:

我是编写程序的新手。所以我的任务是在谷歌地图卡中绘制标记。现在这只是 2 个标记,我已经在 javascript 中完成了这个,这没问题,但是对于这个程序的未来,我需要在一个 java 程序中使用它,它的任务是绘制 2 个标记,但我必须限制一个ma 卡中的矩形形状,在这种形状中,它应该只是一个标记,另一个标记在场外,不应该是可见的!!!!这一切都应该用java程序而不是javascript编写。 背景是,这将在不久的将来成为像飞行跟踪器一样的跟踪器,在 xml 文件中保存多个标记的坐标,并且该坐标应该像真实的实时飞行跟踪器一样自动刷新。对于下一步,我还通过 websockets 将 javascript 与我的 java 程序连接起来。

但起初我需要帮助来编写这个 java 程序以及如何将它与我显示谷歌地图卡的 javascript 连接。

感谢您的帮助!!!

这是我的 java 脚本的代码,带有 2 个点和新的 java 程序,我只想在澳大利亚显示标记!!! 我在这个例子中展示的两个品脱来自一个 XML 文件,这没关系,但是这一切应该发生在 java 程序中而不是 javascript 中。

javascript代码:

<!DOCTYPE html >
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>tracker</title>
    <style>

      #map {
        height: 100%;
      }

      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>

  </head>

  <body>
       <div id="map"></div>


    <script>

        function initMap() {                   
        var map = new google.maps.Map(document.getElementById('map'), {
          center: new google.maps.LatLng(52.556603, 30.244127),            
          zoom: 2           //Zoom-Stufe der Karte beim Laden der Seite
        });



        var infoWindow = new google.maps.InfoWindow;           


          downloadUrl("vesselxml4.xml", function(data) {          
            var xml = data.responseXML;                           
            var markers = xml.documentElement.getElementsByTagName('marker'); 
            Array.prototype.forEach.call(markers, function(markerElem) {       
             var name = markerElem.getAttribute('name');               
              var address = markerElem.getAttribute('address');         
              var point = new google.maps.LatLng(                       
                  parseFloat(markerElem.getAttribute('lat')),
                  parseFloat(markerElem.getAttribute('lng')));

              var infowincontent = document.createElement('div');       
              var strong = document.createElement('strong');            // 
              strong.textContent = name                                 
              infowincontent.appendChild(strong);
              infowincontent.appendChild(document.createElement('br'));

              var text = document.createElement('text');               
              text.textContent = address                                
              infowincontent.appendChild(text);


              var marker = new google.maps.Marker({                     
                map: map,
                position: point,
                //icon: {                                                 
                    //path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW,
                    //scale: 3
                //}
                //

                });



              marker.addListener('click', function() {                 
                infoWindow.setContent(infowincontent);
                infoWindow.open(map, marker);
              });
            });
          });
        }



      function downloadUrl(url, callback) {                        
        var request = window.ActiveXObject ?
            new ActiveXObject('Microsoft.XMLHTTP') :
            new XMLHttpRequest;

        request.onreadystatechange = function() {                          

          if (request.readyState == 4) {
            request.onreadystatechange = doNothing;
            callback(request, request.status);
          }
        };

        request.open('GET', url, true);
        request.send(null);
      }

      function doNothing() {}

      </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDuZVG0Z9Ei7ubm5bkAfPsYUI-Wm8C_c-0&callback=initMap">
    </script>
  </body>
</html>

xml 文件:

<markers>
<marker id="1"   lng="131.044"  lat="-25.363"   name="JUN XING 1"   />
<marker id="2"   lng="101.786155"  lat="26.200722"   name="NO PLANS"   />
</markers>

【问题讨论】:

  • 请去掉java标签 - 它与它无关。
  • 是的,我知道,但我想要这样一个 java 程序来做到这一点!检查这两个标记是否在自定义矩形字段中。如果标记在此字段中,则应显示在卡片中
  • 你是说地图在说卡片?
  • 是的,对不起!
  • 而且该xml文件也应该加载到java程序中,而不是直接加载到javascript中

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


【解决方案1】:

如何在 Google Maps API v3 中设置标记:

var marker1 = new google.maps.Marker({
  position: {lat: -25.363, lng: 131.044},
  map: map,
  title: 'JUN XING 1'
});


var marker2 = new google.maps.Marker({
  position: {lat: 26.200722, lng: 101.786155},
  map: map,
  title: 'NO PLANS'
});

在分配map 之后,将其插入到底部的函数 initMap() 中。

【讨论】:

  • 好的,非常感谢。但问题是,这两个标记只是为了测试这个。我有带有标记数据的 xml 文件。因此,如果我在 javascript 中执行所有这些操作,则会出现性能问题。所以我需要一个java程序来加载这个xml文件并在地图上绘制这个标记。最后它应该像一个每分钟刷新标记的飞行器。这就是为什么我需要一个 java 程序的原因,对于第一步,如果我只能用一个 java 程序加载 xml 文件并在地图上绘制这数千个标记,那就没问题了。
  • 并且在最好的情况下,它只绘制这些标记,这些标记落在可以定义为澳大利亚广告示例的特定矩形区域内。因此,如果此文件中有一个位于非洲的标记... java 程序请参阅 ut 并且不会将此标记绘制到地图上。这样的节目很棒。我知道如果我以后每分钟刷新这些标记,这也适用于 javascript 位。我认为这不会很好。
猜你喜欢
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 2014-05-17
  • 1970-01-01
相关资源
最近更新 更多