У меня есть сценарий, который отображает кучу адресов в базе данных SQL (все они геокодированы) и помещает их на карту google. Я не могу понять, как иметь центр карты в местоположении пользователя с помощью своего мобильного устройства GPS. У меня есть сценарий, который делает это, но я не могу понять, как объединить две функции. Кто угодно? Пожалуйста, помогите мне, потеряв сон …
Вот мой код:
<?php require_once('/home/session_data.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta name="viewport" content="width=480px"/> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>TEST</title> <script src="http://www.google.com/jsapi?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"></script> <script> (function () { google.load("maps", "2"); google.setOnLoadCallback(function () { // Create map var map = new google.maps.Map2(document.getElementById("map")), markerText = "<?php echo $_SESSION['SESS_FULL_NAME']?> - #<?php echo $_SESSION['SESS_MEMBER_ID']?><br><?php echo $_SESSION['SESS_DEPT']?> - <?php echo $_SESSION['SESS_REGION']?>", markOutLocation = function (lat, long) { var latLong = new google.maps.LatLng(lat, long), marker = new google.maps.Marker(latLong); map.setCenter(latLong, 13); map.addOverlay(marker); marker.openInfoWindow(markerText); google.maps.Event.addListener(marker, "click", function () { marker.openInfoWindow(markerText); }); }; map.setUIToDefault(); // Check for geolocation support if (navigator.geolocation) { // Get current position navigator.geolocation.getCurrentPosition(function (position) { // Success! markOutLocation(position.coords.latitude, position.coords.longitude); }, function () { // Gelocation fallback: Defaults to New York, US markerText = "<p>Please accept geolocation for me to be able to find you. <br>I've put you in New York for now.</p>"; markOutLocation(40.714997,-74.006653); } ); } else { // No geolocation fallback: Defaults to Eeaster Island, Chile markerText = "<p>No location support. Try Easter Island for now. :-)</p>"; markOutLocation(-27.121192, -109.366424); } }); })(); </script> <script type="text/javascript"> //<![CDATA[ // this variable will collect the html which will eventually be placed in the side_bar var side_bar_html = ""; // arrays to hold copies of the markers and html used by the side_bar // because the function closure trick doesnt work there var gmarkers = []; // global "map" variable var map = null; // A function to create the marker and set up the event window function function createMarker(latlng, name, html) { 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); }); // save the info we need to use later for the side_bar gmarkers.push(marker); // add a line to the side_bar html side_bar_html += '<a href="javascript:myclick(' + (gmarkers.length-1) + ')">' + name + '<\/a><br>'; } // This function picks up the click and opens the corresponding info window function myclick(i) { google.maps.event.trigger(gmarkers[i], "click"); } function initialize() { // create the map var myOptions = { zoom: 8, center: new google.maps.LatLng(43.907787,-79.359741), mapTypeControl: true, mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}, navigationControl: true, mapTypeId: google.maps.MapTypeId.ROADMAP } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); google.maps.event.addListener(map, 'click', function() { infowindow.close(); }); // Read the data from example.xml downloadUrl("phpsqlajax_genxml2.php", function(doc) { var xmlDoc = xmlParse(doc); var markers = xmlDoc.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { // obtain the attribues of each marker var lat = parseFloat(markers[i].getAttribute("lat")); var lng = parseFloat(markers[i].getAttribute("lng")); var point = new google.maps.LatLng(lat,lng); var html = markers[i].getAttribute("html"); var label = markers[i].getAttribute("label"); // create the marker var marker = createMarker(point,label,html); } // put the assembled side_bar_html contents into the side_bar div document.getElementById("side_bar").innerHTML = side_bar_html; }); } var infowindow = new google.maps.InfoWindow( { size: new google.maps.Size(150,50) }); //]]> </script> </head> <body onload="load()" onunload="Unload()"> <div id="map" style="width: 480px; height: 300px"></div> </body> </html>