Friday, 15 March 2013

javascript - Plot 700 address marker into the google map using html php xml -



javascript - Plot 700 address marker into the google map using html php xml -

i plotting 700 address in google map using javascript , xml file.

so javascript function working fine till 300 address , plotting address correctly in map afterwards slow downwards , hang html page. can provide me improve solution accomplish plot address in google map.

here xml sample file, having 675 address in file & filename xml1.xml. e.g.

<xml><listing> <storename>borges architectural group</storename> <address>1478 stone point dr # 350 roseville ca 95661-2876 placer</address> <person>owner lane borges</person> <phone>9167827200</phone> <web>www.borgesarch.com</web> <source>infogroup</source> </listing> <listing> <storename>carrier johnson culture</storename> <address>1301 3rd ave san diego ca 92101-4012 san diego</address> <person>president michael c johnson</person> <phone>6192392353</phone> <web>www.carrierjohnson.com</web> <source>infogroup</source> </listing> </xml>

so reading file in javascript made 1 function read xml content , add together array of address, here getting total 675 address , passing 1 1 google map functions. here javascript that.

<script type="text/javascript"> var addresses=new array(); var info=new array(); var infowindow = new google.maps.infowindow(); var latlng = new google.maps.latlng(27.8333,-81.7170); var mapoptions = { zoom: 4, center: latlng, maptypeid: google.maps.maptypeid.roadmap } var geo = new google.maps.geocoder(); var map = new google.maps.map(document.getelementbyid("map"), mapoptions); var bounds = new google.maps.latlngbounds(); function getaddress(search,info1, next) { geo.geocode({address:search}, function (results,status){ if (status == google.maps.geocoderstatus.ok) { var p = results[0].geometry.location; var lat=p.lat(); var lng=p.lng(); var msg = 'address="' + search + '" lat=' +lat+ ' lng=' +lng+ ' <br>'; createmarker(search +"<br/>"+ info1,lat,lng); } else{ if (status == google.maps.geocoderstatus.over_query_limit) { nextaddress--; }else { var reason="code "+status; var msg = 'address="' + search + '" error=' +reason+ ' <br>'; } } next(); } ); } function createmarker(add,lat,lng) { var contentstring = add; var marker = new google.maps.marker({ position: new google.maps.latlng(lat,lng), map: map, zindex: math.round(latlng.lat()*-100000)<<5 }); google.maps.event.addlistener(marker, 'click', function() { infowindow.setcontent(contentstring); infowindow.open(map,marker); }); bounds.extend(marker.position); } function callajax(){ downloadurl('xml1.xml',function (listings_data){ listings_data = xmlparse(listings_data); var markers = listings_data.documentelement.getelementsbytagname('listing'); (var = 0; < markers.length; i++) { var web; var storename= markers[i].getelementsbytagname('storename')[0].firstchild.data; addresses[i]= storename + " <br />" + markers[i].getelementsbytagname('address')[0].firstchild.data; var perosn= markers[i].getelementsbytagname('person')[0].firstchild.data; var phone= markers[i].getelementsbytagname('phone')[0].firstchild.data; var source=markers[i].getelementsbytagname('source')[0].firstchild.data; if (typeof markers[i].getelementsbytagname('web')[0] == "undefined") web=''; else web=markers[i].getelementsbytagname('web')[0].firstchild.data; info[i]= perosn + " <br />"+ phone + " <br />"+ web +" <br />"+ source; }}); } var nextaddress = 0; function thenext() { if (nextaddress < addresses.length) { settimeout('getaddress("'+addresses[nextaddress]+'","'+info[nextaddress]+'",thenext)',1 ); nextaddress++; } else { map.fitbounds(bounds); } } function timeout_init() { settimeout('thenext()', 3000); } callajax(); timeout_init(); </script>

don't geocode addresses in client. server intensive operation , subject quota , rate limiting.

if instead wish geocode static, known addresses, see geocoding web service documentation.

geocode addresses offline web service (or else) , utilize resulting coordinates display map.

php javascript html xml google-maps

No comments:

Post a Comment