aPoint=map.fromLatLngToDivPixel(labelA.getPoint());
bPoint=map.fromLatLngToDivPixel(labelB.getPoint());
オーバーレイ アプローチを試しましたが、変数を関数に戻す必要があるため失敗しました。
function LabelLatLongSort(a,b)
{
labelA = eval("label_"+a.deviceId);
labelB = eval("label_"+b.deviceId);
longOffset = eval("offsetOverlapWith_"+a.customId);
overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(map);
google.maps.event.addListenerOnce(map, 'idle', function() {
aPoint=overlay.getProjection().fromLatLngToDivPixel(labelA.getPoint());
bPoint=overlay.getProjection().fromLatLngToDivPixel(labelB.getPoint());
});
diffLat = bPoint.y-aPoint.y;
diffLong = aPoint.x-bPoint.x;
if (Math.abs(diffLong)>longOffset) return diffLong;
if (diffLat==0)
{
return b.deviceId-a.deviceId;
}
return diffLat;
}