Googlemap JS中两种不同类型的标记

时间:2017-09-02 07:06:01

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

我正在为一家小型房地产代理商工作。 我在网站上有一个谷歌地图,显示所有可用的属性,通过XML调用从Mysqli数据库中提取属性数据。这一切都有效。 客户现在想要添加办公室的位置。这些不在数据库中,因此需要手动添加。 是否有可能有两个不同的'var marker = new google.maps.Marker({'调用?如果是这样,我找不到将它放在循环之外的位置,它会拉动每个属性数据。 工作代码是:

<script>
    function initMap() {
    var map = new google.maps.Map(document.getElementById('map'), {
      center: new google.maps.LatLng(40.300000, 15.800000),
      zoom: 9
    });
    var infoWindow = new google.maps.InfoWindow;

      downloadUrl('mapXMLcall.php', function(data) {
        var xml = data.responseXML;
        var property = xml.documentElement.getElementsByTagName('property');
        Array.prototype.forEach.call(property, function(propertyElem) {
          var id = propertyElem.getAttribute('Idnumber');
          var name = propertyElem.getAttribute('Name');
          var price = propertyElem.getAttribute('Price');
          if (price == '999999') {var price = "POA"};
          var point = new google.maps.LatLng(
              parseFloat(propertyElem.getAttribute('Lat')),
              parseFloat(propertyElem.getAttribute('Long')));

          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 = ' €' + price;
          infowincontent.appendChild(text);
          var marker = new google.maps.Marker({
            map: map,
            position: point,
            url: 'dbtest2.php?id=' + id
          });
          marker.addListener('mouseover', function() {
            infoWindow.setContent(infowincontent);
            infoWindow.open(map, marker);
          });

              google.maps.event.addListener(marker, 'click', function() {

            window.open("dbtest2.php?id=" + id, "_blank", "toolbar=no,scrollbars=yes,status=no, resizable=yes,top=100,left=100,width=920,height=900")
});
        });

      });
    }



  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>

感谢任何建议。

1 个答案:

答案 0 :(得分:0)

初始化initMap变量后,可以在map函数中添加任何“固定”标记(可以在调用downloadUrl之前或之后)。

function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    center: new google.maps.LatLng(40.300000, 15.800000),
    zoom: 9
  });
  var infoWindow = new google.maps.InfoWindow;

  // add a fixed marker
  var anotherMarker = new google.maps.Marker({
    map: map,
    position: new google.maps.LatLng(40.300000, 15.800000),
  });

  downloadUrl('mapXMLcall.php', function(data) {
  // ...
  }
}