001.
<script type=
"text/javascript"
>
002.
003.
004.
005.
006.
007.
var
map;
008.
var
container;
009.
var
zoom = 6;
010.
<%=
this
.CenterPoint %>
011.
012.
var
icons = Array();
013.
var
baseMarker;
014.
015.
var
myPoints = Array();
016.
var
myPointsTemp = Array();
017.
018.
019.
function
load() {
020.
if
(GBrowserIsCompatible()) {
021.
container = document.getElementById(
"mapDiv"
);
022.
map =
new
GMap2(container, { draggableCursor:
"crosshair"
});
023.
024.
map.setCenter(centerPoint, zoom);
025.
026.
map.addControl(
new
GScaleControl());
027.
map.addControl(
new
GLargeMapControl());
028.
map.addControl(
new
GMapTypeControl());
029.
030.
map.enableScrollWheelZoom();
031.
032.
var
pos =
new
GControlPosition(G_ANCHOR_BOTTOM_LEFT,
new
GSize(0, -80));
033.
map.addControl(
new
MStatusControl({ position: pos }));
034.
035.
036.
baseMarker =
new
GMarker(centerPoint, { draggable:
true
});
037.
038.
addMarkers();
039.
040.
}
041.
}
042.
043.
044.
function
addMarkers() {
045.
myPoints = Array();
046.
map.clearOverlays();
047.
map.addOverlay(baseMarker)
048.
049.
var
bounds = map.getBounds();
050.
<%=MyPlace%>
051.
052.
createIcons();
053.
054.
myPointsTemp = Array();
055.
for
(
var
n = 0; n < myPoints.length; n++) {
056.
myPointsTemp.push(myPoints[n]);
057.
}
058.
plotMarkers();
059.
}
060.
061.
062.
function
plotMarkers() {
063.
var
p = myPointsTemp.shift();
064.
var
marker =
new
GMarker(p, { icon: icons.shift() })
065.
GEvent.addListener(marker,
'click'
,
function
() {
066.
var
html =
'Distance to base: '
+ (marker.getLatLng().distanceFrom(baseMarker.getLatLng()) / 1609).toFixed(2) +
' Miles'
;
067.
marker.openInfoWindowHtml(html)
068.
});
069.
map.addOverlay(marker)
070.
if
(myPointsTemp.length) {
071.
window.setTimeout(
"plotMarkers()"
, 10);
072.
}
073.
074.
}
075.
this
.distanceArray_Count=0;
076.
this
.distanceArray=
new
Array();
077.
078.
079.
function
compareDistance(LatLonA, LatLonB) {
080.
var
d=baseMarker.getLatLng().distanceFrom(LatLonA) - baseMarker.getLatLng().distanceFrom(LatLonB);
081.
082.
return
d;
083.
}
084.
085.
086.
function
sort() {
087.
directionsPanel = document.getElementById(
"route"
);
088.
089.
090.
myPoints.sort(compareDistance);
091.
092.
var
latlonDistance=
''
;
093.
var
latlon=
''
;
094.
for
(
var
n = 0; n < myPoints.length; n++) {
095.
if
(n+1<=myPoints.length-1){
096.
097.
var
lat1=myPoints[n].y;
098.
var
lon1=myPoints[n].x;
099.
var
lat2=myPoints[n+1].y;
100.
var
lon2=myPoints[n+1].x;
101.
102.
var
R = 6371;
103.
var
dLat = (lat2-lat1).toRad();
104.
var
dLon = (lon2-lon1).toRad();
105.
var
a = Math.sin(dLat/2) * Math.sin(dLat/2) +
106.
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
107.
Math.sin(dLon/2) * Math.sin(dLon/2);
108.
var
c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
109.
var
d = R * c;
110.
111.
this
.distanceArray[
this
.distanceArray_Count++]=d;
112.
latlonDistance+=
','
+d;
113.
114.
}
115.
latlon+=
','
+myPoints[n].y+
"-"
+myPoints[n].x;
116.
}
117.
cbpCalculateTime.PerformCallback(latlonDistance+
'/'
+latlon);
118.
119.
map.clearOverlays();
120.
map.addOverlay(baseMarker)
121.
122.
directions =
new
GDirections(map, directionsPanel);
123.
124.
createIcons();
125.
myPointsTemp = Array();
126.
var
fromTo =
''
;
127.
for
(
var
n = 0; n < myPoints.length; n++) {
128.
myPointsTemp.push(myPoints[n]);
129.
130.
131.
if
(n == 0) {
132.
fromTo =
'from: '
+ myPoints[n].y +
', '
+ myPoints[n].x +
' to: '
+ myPoints[n + 1].y +
', '
+ myPoints[n + 1].x +
' '
;
133.
134.
135.
}
else
if
(n + 1 <= myPoints.length - 1) {
136.
fromTo +=
' to: '
+ myPoints[n + 1].y +
', '
+ myPoints[n + 1].x +
' '
;
137.
138.
}
139.
}
140.
directions.load(fromTo, { locale:
'th'
});
141.
142.
143.
144.
145.
146.
}
147.
148.
149.
createIcons =
function
() {
150.
var
baseIcon =
new
GIcon();
151.
baseIcon.iconSize =
new
GSize(20, 34);
152.
baseIcon.iconAnchor =
new
GPoint(10, 34);
153.
baseIcon.infoWindowAnchor =
new
GPoint(10, 0);
154.
icons = Array();
155.
156.
for
(
var
n = 65; n < 91; n++) {
158.
icons.push(icon);
159.
}
160.
161.
}
162.
163.
function
unload() {
164.
GUnload();
165.
}
166.
167.
168.
169.
170.
171.
</script>