簡體   English   中英

Google Maps應用中的自定義標記

[英]Custom Markers in Google Maps app

我正在使用google maps javascript應用程序,並且要對其中一個標記使用自定義圖像。

這是我想用來獲取標記的代碼示例。

 var searchUrl = 'phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
 GDownloadUrl(searchUrl, function(data) {
   var xml = GXml.parse(data);
   markers = xml.documentElement.getElementsByTagName('marker');

   var sidebar2 = document.getElementById('sidebar2');
   sidebar2.innerHTML = '';
   if (markers.length == 0) {
     document.getElementById('alert_div').innerHTML = "<a>No Results found</a>";
     document.getElementById('alert_div').style.display = 'block';

     map.setCenter(new GLatLng(40.178873,2.8125), 2);
     return;
   }
   showSidebar();   
   var limitsearch = document.getElementById('limitsearch').value;
   var bounds = new GLatLngBounds();
   if (limitsearch <= markers.length){
   for (var i = 0; i < limitsearch; i++) {
     var name = markers[i].getAttribute('name');
     var phone = markers[i].getAttribute('phone');
     if (phone == 0){phone = '';}
     var address = markers[i].getAttribute('address');
     var distance = parseFloat(markers[i].getAttribute('distance'));
     var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                             parseFloat(markers[i].getAttribute('lng')));

     var marker = createMarker(point, name, address);
     map.addOverlay(marker);
     var sidebarEntry = createSidebarEntry(marker, phone, name, address, distance);
     sidebar2.appendChild(sidebarEntry);
     bounds.extend(point);
   }}
   else{
   for (var i = 0; i < markers.length; i++) {
     var name = markers[i].getAttribute('name');
     var phone = markers[i].getAttribute('phone');
     if (phone == 0){phone = '';}
     var address = markers[i].getAttribute('address');
     var distance = parseFloat(markers[i].getAttribute('distance'));
     var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                             parseFloat(markers[i].getAttribute('lng')));

     var marker = createMarker(point, name, address);
     map.addOverlay(marker);
     var sidebarEntry = createSidebarEntry(marker, phone, name, address, distance);
     sidebar2.appendChild(sidebarEntry);
     bounds.extend(point); 
   }

   }




   map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
  showSidebar();
  getAlert();
 });

}

這是createMarker的替代品,以支持圖標

function createMarker(point, name, address, markerIcon) {
  var markerOptions = {}
  if (markerIcon !== undefined) {
    markerOptions = { icon: markerIcon };
  }
  marker = new GMarker(point, markerOptions);
  var html = '<b>' + name + '</b> <br/>' + address;
  GEvent.addListener(marker, 'click', function() {
     marker.openInfoWindowHtml(html); 
  });
  return marker; 
}

然后,您可以根據需要傳入GIcon對象作為最后一個選項。 您需要像這樣初始化它:

var myIcon = new GIcon();
myIcon.iconSize = new GSize(16, 16);
myIcon.iconAnchor = new GPoint(4, 7);
myIcon.image = "http://www.url.com/somepic.png";
var marker = createMarker(point, name, address, myIcon);

您需要確定大小和錨點位置

另請參閱Google文檔中的以下資源:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM