سؤال

خرائط جوجل API V3 هو ما أحاول أن استخدام.

لدي كل الإحداثيات في الخلية.أنا فقط ، على سبيل المثال ، تحتاج إلى أن تأخذ 5 القوائم ووضعها على الخريطة ولكن أود أن تكون قادرة على العثور على نقطة المركز بناء على الإحداثيات متعددة أود أن عرض مستوى التكبير / التصغير كذلك.نعم تعلم ؟

أنا بعد فترة من حياتي مع ما أعرفه هو بسيطة بشكل رهيب, أنا فقط لا أستطيع أن أفهم هذا API بها.سوف باي بال 20 دولار لأي شخص يمكن أن تساعد لي.

//select * from mysql limit 5

//ok great we got 5 results, great job, format the 5 results so google maps like it, [name,lat,lng] whatever.

//put them on the map and let them be clickable so i can put stuff in the infowindow thing

//make the map adjust to the proper zoom level and center point

التحديث


هذا هو ما كنت أبحث عنه ، ويساعد هذا الأمل الآخرين.

الائتمان [كريس B] عن الحس صيغة الرياضيات للحصول على مركز coord ، sw الحبل هو أدنى خطوط الطول و العرض ، و ني coord هو أعظم اللات و lon

sort($lat)&&sort($lon);
$r['c'] = array_sum($lat)/count($lat).', '.array_sum($lon)/count($lon);
$r['ne'] = $lat[count($lat)-1].', '.$lon[count($lon)-1];
$r['sw'] = $lat[0].', '.$lon[0];

var myOptions = {zoom:4,center: new google.maps.LatLng(<?php echo $r['c']; ?>),mapTypeId:google.maps.MapTypeId.ROADMAP}
var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
<?php foreach($x as $l) echo 'new google.maps.Marker({position:new google.maps.LatLng('.$l['lat'].','.$l['lon'].'),map:map,clickable:true});'; ?>
map.fitBounds(new google.maps.LatLngBounds(new google.maps.LatLng(<?php echo $r['sw']; ?>),new google.maps.LatLng(<?php echo $r['ne']; ?>)));
هل كانت مفيدة؟

المحلول

إذا كان متوسط/المرجحة مركز نقطة مقبولة - هل يمكن أن مجرد متوسط جميع خطوط العرض و متوسط كل الطول:

$latTotal = 0;
$lngTotal = 0;
foreach ($markers as $marker) {
    $latTotal += $marker['lat'];
    $lngTotal += $marker['lng'];
}

$centerLat = $latTotal/count($markers);
$centerLng = $lngTotal/count($markers);

لبقية من ذلك ، هناك بعض جيدة V3 الدروس على جوجل.

نصائح أخرى

V3

وكنت تستخدم خرائط جوجل شهر أو اثنين من العودة، ولكن تحولت إلى V2 في وقت لاحق. ومع ذلك، كان لي نفس المشكلة كما كنت لذلك كتبت فئة MarkerManager لV3 API. لا أستطيع العثور على أحدث إصدار من صفي، ولكن لم أجد لذلك، نأمل، عمل واحد. يمكنك الحصول عليه هنا .

ولدي لتحذيرك على الرغم - انها ليست optimazed على الإطلاق، وليس باستخدام تراكب، وذلك عندما حاولت وضع 50+ علامات في إدارة ومثبت إخفاء / إظهار الطبقة هي sloooow ... ولكن ربما يمكن أن يكون بعض النجاح في ذلك.

والاستخدام سبيل المثال:

var map = new google.maps.Map(document.getElementById('MapLayerId'), {
    zoom: 7,
    position: new google.maps.LatLng(latitude, longitude),
    mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker1 = new google.maps.Marker({
    position: new google.maps.LatLng(latitude, longitude),
    map: map
});
var marker2 = new google.maps.Marker({
    position: new google.maps.LatLng(latitude, longitude),
    map: map
});
var manager = new MarkerManager(map, {fitBounds: true});
manager.add(marker1);
manager.add(marker2);
manager.show();

وGDownloadUrl في V2 downloadUrl ما يعادلها في GOOGLE MAPS API V3

كيفية تحميل جميع الإحداثيات في قاعدة البيانات (الخلية أو SQL).

var myLatlng = new google.maps.LatLng("37.427770" ,"-122.144841");
var myOptions = {zoom: 15, center: myLatlng, mapTypeId: google.maps.MapTypeId.ROADMAP,}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

var url='marker.php?arg1=x&arg2=y...'; 

downloadUrl(url, function(data) {
      var markers = data.documentElement.getElementsByTagName("marker");
      for (var i = 0; i < markers.length; i++) {
        var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
                                    parseFloat(markers[i].getAttribute("lng")));
        var marker = new google.maps.Marker({position: latlng, map: map});
       }
});


function createXmlHttpRequest() {
 try {
   if (typeof ActiveXObject != 'undefined') {
     return new ActiveXObject('Microsoft.XMLHTTP');
   } else if (window["XMLHttpRequest"]) {
     return new XMLHttpRequest();
   }
 } catch (e) {
   changeStatus(e);
 }
 return null;
};


function downloadUrl(url, callback) {
     var status = -1;
     var request = createXmlHttpRequest();
     if (!request) {
        return false;
     }     
     request.open('GET', url);     
     request.onreadystatechange = function() {
        if (request.readyState == 4) {
            try {
                status = request.status;
            } catch (e) {
                // Usually indicates request timed out in FF.
            }     
            if (status == 200) {
                 var s=request.responseText;
                 callback( xmlParse(s) ); 
            }
        }
     }  
     try {    
        request.send(null);      
     }catch (e) {    
        changeStatus(e);
     } 
};

function xmlParse(str) {

  if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') {
    var doc = new ActiveXObject('Microsoft.XMLDOM');
    doc.loadXML(str);
    return doc;
  }
  if (typeof DOMParser != 'undefined') {
    return (new DOMParser()).parseFromString(str, 'text/xml');
  }
  return createElement('div', null);
}

هل سحب جوجل الرسمي خريطة PHP / ماي البرنامج التعليمي؟ http://code.google.com/apis/maps/articles/phpsqlajax. أتش تي أم أل

وهذه محاولة خوارزمية لإيجاد الوسطى من مضلع:

http://tog.acm.org/resources/GraphicsGems/gemsiv /centroid.c

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top