how to handle conflict of two marker in google map using javascript -


i trying create multiple markers on google map using java script, here problem arise when 2 markers have same geo location, if such 2 markers arise other markers occur after marker not display on map, please guide me if has solution.

var geocoder; var map; var geocoder = new google.maps.geocoder(); var newlocation =[]; var selectindex =0; var markers =[]; var iconbase = 'https://maps.google.com/mapfiles/kml/shapes/pin.jpg'; var infowindowcontent ;  var markerjson = eval('{{$json_data}}'); console.log(markerjson);  var markers = []; var i=0;  var media;  for(var marker in markerjson) {     if(markerjson[marker].media_type == '1')   {      media = '{{$base_url}}add_images/thumb/'+markerjson[marker].image_video_name;    }   else   {     media =  '{{$base_url}}add_images/thumb/play_back.png';   }   markers[i] = ['<div class="info_abstract"><div class="first_show">'+markerjson[marker].title+'</div><div class="second_show"><img src="'+media+'" /></div></div><div class="info_desc"><div class="status_container">'+markerjson[marker].product_status+'</div><div>'+markerjson[marker].desc.substring(0,100)+'</div><div><a class="detail_link"><a href="{{$base_url}}detail-view/'+markerjson[marker].id+'" >view detail</a></div></div>',number(markerjson[marker].ad_address_latitude),number(markerjson[marker].ad_address_longitude),markerjson[marker].city_name,markerjson[marker].desc,i+1];    i=i+1; }   geocoder.geocode( { 'address':'{{$currentcity}}'}, function(results, status) {      if (status == google.maps.geocoderstatus.ok) {        var mapopt = {          center:results[selectindex].geometry.location,          zoom:13,          maptypeid:google.maps.maptypeid.roadmap         };        var map=new google.maps.map(document.getelementbyid("my-map"),mapopt);        var centermarker = new google.maps.marker();        var infowindow = new google.maps.infowindow();        for(var j=0; j < markers.length; j++)       {           marker = new google.maps.marker({          position: new google.maps.latlng(markers[j][1], markers[j][2]),          map: map         });          infowindowcontent = markers[j][0];         google.maps.event.addlistener(marker, 'click', (function(marker, j) {           return function(infowindowcontent) {               infowindow.setcontent(markers[j][0]);               infowindow.open(map,marker);             }          })(marker, j));        }     } else {       alert('{{$lang_var_name.geocode_was_not_successful_for_the_following_reason}}: ' + status);     }   }); 

the way approach increase lat & lng of marker's position if duplicated, created new array holds duplicated lat , lng, search through array, find lat , lng exists, updated lat , lng, assign marker's position, store last lat lng in array.

function getupdatedlatlng(lt, ln) {         var amount = 0.004,             duplicatedlatlng = null,             lat = parsefloat(lt),             lng = parsefloat(ln),             newlat = 0,             newlng = 0,             increasedlat = 0,             increasedlng = 0;         if (mynamespace.duplicatedlatlng.length > 0) {             var obj = null;             (var = 0; < mynamespace.duplicatedlatlng.length; i++) {                 var item = mynamespace.duplicatedlatlng[i];                 if (item.lat == lat && item.lng == lng) {                     obj = item;                     break;                 }             }             if (obj) { // if latlng found in duplicated array increase lat , lng, create new latlng obj.                 increasedlat = (++obj.latincrease);                 increasedlng = (++obj.lngincrease);                 newlat = (obj.lat + (amount * increasedlat));                 newlng = (obj.lng + (amount * increasedlng));             } else { // if latlng didn't found in duplicated array; create new latlng , add array.                 newlat = (lat + amount);                 newlng = (lng + amount);                 increasedlat = 1;                 increasedlng = 1;             }         }         else { // if nothing in duplicated array, create new latlng item , add array.             newlat = (lat + amount);             newlng = (lng + amount);             increasedlat = 1;             increasedlng = 1;         }         duplicatedlatlng = new mynamespace.duplicatedlatlngitem(lat, lng, increasedlat, increasedlng);         mynamespace.duplicatedlatlng.push(duplicatedlatlng);          // return new latlng         return new google.maps.latlng(newlat, newlng);     }  // constructor: used updating new latlng. saved in mynamespace.duplicatedlatlng array. duplicatedlatlngitem: function (lat, lng, latincrease, lngincrease) {     this.lat = lat;     this.lng = lng;     this.latincrease = latincrease;     this.lngincrease = lngincrease; } 

Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -