문제

Google Maps API V3은 제가 사용하려는 것입니다.

MySQL에 모든 좌표가 있습니다. 예를 들어, 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

업데이트


이것이 제가 찾고 있던 것입니다. 이것이 다른 사람들을 돕기를 바랍니다.

Common Sense Math 공식에 대한 [Chris B]에 대한 크레딧 중심 코디를 얻기위한 SW 코드는 가장 낮은 위도와 LON이며 NE COORD는 가장 큰 LAT 및 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 튜토리얼이 있습니다. 구글에서.

다른 팁

한 달 또는 두 달에 Google Maps V3를 사용하고 있었지만 나중에 V2로 전환했습니다. 그러나 나는 당신과 같은 문제를 겪었으므로 API v3에 대한 MarkerManager 클래스를 썼습니다. 나는 내 수업의 최신 버전을 찾을 수 없지만, 희망적으로 일하는 것을 찾았습니다. 여기서 얻을 수 있습니다.

그래도 경고해야합니다. 전혀 최적화되지 않았고 오버레이를 사용하지 않기 때문에 관리자에 50 개 이상의 마커를 넣고 숨기기를 전환하려고 할 때 클래스가 슬루 우우입니다 ... 그러나 어쩌면 당신은 약간의 성공을 거둘 수 있습니다. 그것.

사용 예 :

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();

Google Maps API V3의 V2 동등한 다운로드 러어의 GdownloadUrl

데이터베이스에 모든 좌표를로드하는 방법 (MySQL 또는 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);
}

공식 Google Map PHP/MySQL 자습서를 확인 했습니까?http://code.google.com/apis/maps/articles/phpsqlajax.html

다각형의 중심을 찾기 위해이 알고리즘을 사용해보십시오.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top