有没有办法用字母标记我的地图标记?

时间:2016-01-11 17:36:05

标签: php google-maps google-maps-markers

function initialize() {
var map;
var bounds = new google.maps.LatLngBounds();
var mapOptions = {
    mapTypeId: 'roadmap'
};

// Display a map on the page
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
map.setTilt(45);

// Multiple Markers

var markers = [
    ['Joe Brown Park, New Orleans',             30.030342, -89.966561],
    ['City Park, New Orleans',                  29.993514, -90.098118]
];

// Info Window Content
var infoWindowContent = [

    [
    '<h3>Joe Brown Park</h3>' +
    '<h3>Named after 1 of the states largest independent oil producers, this park offers year-round events.</h3>' +
    '</div>'],
    [
    '<h3>City Park </h3>' +
    '<h3>A 1,300 acre public park in New Orleans, Louisiana, is the 87th largest and 7th-most-visited urban public park in the United States.</h3>' +
    '</div>'],
];

// Display multiple markers on a map
var infoWindow = new google.maps.InfoWindow(), marker, i;

// Loop through our array of markers & place each one on the map  
for( i = 0; i < markers.length; i++ ) {
    var position = new google.maps.LatLng(
        markers[i][1], 
        markers[i][2],
        markers[i][3]);
    bounds.extend(position);
    marker = new google.maps.Marker({
        position: position,
        map: map,
        title: markers[i][0]
    });

    // Allow each marker to have an info window    
    google.maps.event.addListener(marker, 'click', (function(marker, i) {
        return function() {
            infoWindow.setContent(infoWindowContent[i][0]);
            infoWindow.open(map, marker);
        }
    })(marker, i));

}

我可以只将Icon变量添加到我的工作地图或简单的内容中,还是需要更改我的大部分代码来为我的标记添加字母?提前致谢

2 个答案:

答案 0 :(得分:1)

您可以在markers数组中添加另一列:

var markers = [
    ['Joe Brown Park, New Orleans',             30.030342, -89.966561,'','PATHTOICON/icon1.png'],
    ['City Park, New Orleans',                  29.993514, -90.098118,'','PATHTOICON/icon2.jpg']
];

然后在添加标记的循环中添加图标:并指向数组中的图标列

for( i = 0; i < markers.length; i++ ) {
    var position = new google.maps.LatLng(
        markers[i][1], 
        markers[i][2],
        markers[i][3]);
    bounds.extend(position);
    marker = new google.maps.Marker({
        position: position,
        map: map,
        title: markers[i][0],
        icon: markers[i][4]// <=== each marker can have its own icon
    });

答案 1 :(得分:1)

Google Maps Javascript API v3支持single character labels on markers,这将使用数组中标记的数字(基于零)标记您的标记。

marker = new google.maps.Marker({
  position: position,
  map: map,
  title: markers[i][0],
  label: ""+i
});

如果您希望它是一个字母,您可以将该字母作为第四个元素添加到数组中,或者将数组索引转换为字母:

var label = String.fromCharCode(65+i);
marker = new google.maps.Marker({
  position: position,
  map: map,
  title: markers[i][0],
  label: label
});

proof of concept fiddle

代码段

&#13;
&#13;
function initialize() {
  var map;
  var bounds = new google.maps.LatLngBounds();
  var mapOptions = {
    mapTypeId: 'roadmap'
  };

  // Display a map on the page
  map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
  map.setTilt(45);

  // Multiple Markers
  var markers = [
    ['Joe Brown Park, New Orleans', 30.030342, -89.966561],
    ['City Park, New Orleans', 29.993514, -90.098118]
  ];

  // Info Window Content
  var infoWindowContent = [
    [
      '<h3>Joe Brown Park</h3>' +
      'Named after 1 of the states largest independent oil producers, this park offers year-round events.' +
      '</div>'
    ],
    [
      '<h3>City Park </h3>' +
      'A 1,300 acre public park in New Orleans, Louisiana, is the 87th largest and 7th-most-visited urban public park in the United States.' +
      '</div>'
    ],
  ];

  // Display multiple markers on a map
  var infoWindow = new google.maps.InfoWindow(), marker, i;
  // Loop through our array of markers & place each one on the map  
  for (i = 0; i < markers.length; i++) {
    var position = new google.maps.LatLng(
      markers[i][1],
      markers[i][2]);
    bounds.extend(position);
    var label = String.fromCharCode(65 + i);
    marker = new google.maps.Marker({
      position: position,
      map: map,
      title: markers[i][0],
      label: label
    });

    // Allow each marker to have an info window    
    google.maps.event.addListener(marker, 'click', (function(marker, i) {
      return function() {
        infoWindow.setContent(infoWindowContent[i][0]);
        infoWindow.open(map, marker);
      }
    })(marker, i));
  }
  map.fitBounds(bounds);
}
google.maps.event.addDomListener(window, 'load', initialize);
&#13;
html,
body,
#map_canvas {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}
&#13;
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas"></div>
&#13;
&#13;
&#13;