Я посмотрел ваш код, однако не смог точно определить, почему маркеры реплицируются, если предоставляются разные адреса. Пожалуйста, посмотрите демо здесь для создания нескольких маркеров, надеюсь, они помогут.
Javascript для инициализации карты и создания маркеров показан ниже.
var map, markersArray, infowindow;
function initialize() {
var myOptions = {
zoom: 14,
center: new google.maps.LatLng(51.5001524, -0.1262362),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
infowindow = new google.maps.InfoWindow({
size: new google.maps.Size(150, 50)
});
google.maps.event.addListener(map, 'click', function () {
infowindow.close();
});
markersArray = [];
}
function createMarker(latlng, html, zoom) {
var contentString = html;
var marker = new google.maps.Marker({
position: latlng,
map: map,
zIndex: Math.round(latlng.lat() * -100000) << 5
});
google.maps.event.addListener(marker, 'click', function () {
infowindow.setContent(contentString);
infowindow.open(map, marker);
});
marker.MyZoom = zoom;
return marker;
}
function addMarker() {
var lat = parseFloat(document.getElementById('lat').value);
var lng = parseFloat(document.getElementById('lng').value);
if (!isNaN(lat) && !isNaN(lng)) {
point = new google.maps.LatLng(lat, lng);
map.setCenter(point);
zoom = 14;
alert(point);
marker = createMarker(point, "<h3>Marker" + (markersArray.length + 1) + " " + point + "</h3>", zoom);
var newLi = document.createElement("li");
var newA = document.createElement("a");
var newText = document.createTextNode("Marker " + (markersArray.length + 1));
newA.appendChild(newText);
newLi.appendChild(newA);
newA.setAttribute('onclick', 'displayMarker(this.innerHTML);');
document.getElementById('marker_tabs').appendChild(newLi);
markersArray.push(marker);
} else {
alert("Kindly Enter Co-ordinates" + lat + " " + lng);
}
}
function displayMarker(text) {
marker_id = parseInt(text.split(" ")[1]) - 1;
marker = markersArray[marker_id];
map.setCenter(marker.position);
infowindow.setContent("<h3>Markers " + (marker_id + 1) + " " + marker.position + "</h3>");
infowindow.open(map, marker);
}
function getMarker() {
var address = $('#address').val();
address = address.replace(/ /g, "+");
$.getJSON("getjson.php?address=" + address,
function (data) {
lat = data.results[0].geometry.location.lat;
lng = data.results[0].geometry.location.lng;
point = new google.maps.LatLng(lat, lng);
map.setCenter(point);
zoom = 14;
marker = createMarker(point, "<h3>Marker" + (markersArray.length + 1) + " " + point + "</h3>", zoom);
var newLi = document.createElement("li");
var newA = document.createElement("a");
var newText = document.createTextNode("Marker " + (markersArray.length + 1));
newA.appendChild(newText);
newLi.appendChild(newA);
newA.setAttribute('onclick', 'displayMarker(this.innerHTML);');
document.getElementById('marker_tabs').appendChild(newLi);
markersArray.push(marker);
});
}