phpからjavascriptに配列を渡します。
var lat_array = JSON.parse('<?php echo $lat; ?>');
var lng_array = JSON.parse('<?php echo $lng; ?>');
console.log(lng_array);

随机应变 ABCD: Always Be Coding and … : хороший
phpからjavascriptに配列を渡します。
var lat_array = JSON.parse('<?php echo $lat; ?>');
var lng_array = JSON.parse('<?php echo $lng; ?>');
console.log(lng_array);

コンサル会社で、外資系のコンサルだけアイコンを変えてみます。
アイコンはsetOptionで変えます。
setOptions({
icon: {
url: icon
}
});
var map;
var marker = [];
var infoWindow = [];
var icon = 'icon.png';
var markerData = [
{
name: 'マッキンゼー',
ref: '外資',
lat: 35.6636921,
lng: 139.7418055
}, {
name: 'ベイン',
ref: '外資',
lat: 35.6661276,
lng: 139.7312397
}, {
name: 'アビーム',
ref: '外資',
lat: 35.6844514,
lng: 139.764942
}, {
name: 'ボスコン',
ref: '外資',
lat: 35.6811759,
lng: 139.734872
}, {
name: '野村総研',
ref: '国内',
lat: 35.6884676,
lng: 139.7645002
}, {
name: 'MUFJリサーチ',
ref: '国内',
lat: 35.6618341,
lng: 139.7443247
}
];
function initMap(){
var mapLatLng = new google.maps.LatLng({ lat: markerData[0]['lat'], lng: markerData[0]['lng']});
map = new google.maps.Map(document.getElementById('sample'),{
center: mapLatLng,
zoom: 14
});
for(var i=0; i < markerData.length; i++){
markerLatLng = new google.maps.LatLng({lat: markerData[i]['lat'], lng: markerData[i]['lng']});
marker[i] = new google.maps.Marker({
position: markerLatLng,
map: map
});
infoWindow[i] = new google.maps.InfoWindow({
content: '<div class="sample">' + markerData[i]['name'] + '</div>'
});
if(markerData[i]['ref'] == '外資'){
marker[i].setOptions({
icon: {
url: icon
}
});
}
markerEvent(i);
}
}
function markerEvent(i){
marker[i].addListener('click', function(){
infoWindow[i].open(map, marker[i]);
});
}

なるほど、大分わかってきましたね。
読み取り専用のNavigator.geolocationは、ウェブコンテンツがデバイスの位置情報にアクセスするためのGeolocationオブジェクトを返す。
<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
#map {
height: 50%;
margin-top: 10px;
}
html, body {
height: 100%;
margin: 10px;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 2
});
var infoWindow = new google.maps.InfoWindow({map: map});
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
infoWindow.setPosition(pos);
infoWindow.setContent('Location found.');
map.setCenter(pos);
}, function() {
handleLocationError(true, infoWindow, map.getCenter());
});
} else {
handleLocationError(false, infoWindow, map.getCenter());
}
}
function handleLocationError(browserHasGeolocation, infoWindow, pos) {
infoWindow.setPosition(pos);
infoWindow.setContent(browserHasGeolocation ?
'Error: The Geolocation service failed.' :
'Error: Your browser doesn\'t support geolocation.');
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=&callback=initMap">
</script>
</body>
</html>
![]()
一通り終わったと思ったらこれか?
なるほど、navigator.geolocation.getCurrentPositionで位置情報を取得していますね。
<script>
var options = {
enableHighAccuracy : true,
timeout: 5000,
maximumAge: 0
};
function success(pos){
var crd = pos.coords;
console.log('your current position is:');
console.log('latitude : ' + crd.latitude);
console.log('longitude: ' + crd.longitude);
console.log('More or less ' + crd.accuracy + ' meters');
};
function error(err){
console.warn('ERROR(' + err.code + '):' + err.message);
};
navigator.geolocation.getCurrentPosition(success, error, options);
</script>
つくってる人凄すぎてコーディングが嫌になるな。。
<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
#map {
height: 50%;
margin-top: 10px;
}
html, body {
height: 100%;
margin: 10px;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 2,
center: {lat: -33.865427, lng: 151.196123},
mapTypeId: 'terrain'
});
var script = document.createElement('script');
script.src = 'https://developers.google.com/maps/documentation/javascript/examples/json/earthquake_GeoJSONP.js';
document.getElementsByTagName('head')[0].appendChild(script);
}
function eqfeed_callback(results) {
var heatmapData = [];
for (var i = 0; i < results.features.length; i++) {
var coords = results.features[i].geometry.coordinates;
var latLng = new google.maps.LatLng(coords[1], coords[0]);
heatmapData.push(latLng);
}
var heatmap = new google.maps.visualization.HeatmapLayer({
data: heatmapData,
dissipating: false,
map: map
});
}
// // window.eqfeed_callback = function(results) {
// // for (var i = 0; i < results.features.length; i++) {
// // var coords = results.features[i].geometry.coordinates;
// // var latLng = new google.maps.LatLng(coords[1],coords[0]);
// // var marker = new google.maps.Marker({
// // position: latLng,
// // map: map
// // });
// // }
// }
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=hoge&libraries=visualization&callback=initMap">
</script>
</body>
</html>

lengthをもっている配列ではないオブジェクトのforEach
Array.prototype.forEach.call(document.querySelectorAll('span'),function(node){
console.log(node);
});
Array.prototype.forEach()
与えられた関数を、配列の各要素に対して一度ずつ実行します。
function logArrayElement(element, index, array){
console.log("a[" + index + "] = " + element);
}
[2, 5, 9].forEach(logArrayElements);
google.maps.LatLng
LatLngクラスは位置座標のインスタンスを作成するためのクラス。
var latLng = new google.maps.LatLng(35.71, 139.8107, false)
google.maps.Marker
マーカー(アイコン)
var marker = new google.maps.Marker({
map: _map,
position: new google.maps.LatLng(35.693235, 139.757864),
animation: google.maps.Animation.DROP
});
parseFloat
引数として与えられた文字列を解析して浮動小数点数を返す。
InfoWindow.setContent()はInfoWindowクラスのメソッド
infoWindowはそのままですが、情報ウィンドウ
var infoWindow = new google.maps.InfoWindow({
position: new google.maps.LatLng( 35.708194, 139.808565 ) ,
content: "SYNCER" ,
});
infoWindow.open(map);
infoWindow.setContent("Hello!!");
open: 新しい副ブラウザウィンドウを生成し、参照されているリソースをロード
var win = window.open(url, name)
失敗した場合、var winはnull
var win;
var features = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";
{
win = window.open("http://www.cnn.com/", "cnn", features);
}
XMLHttpRequestはサーバーに対してHTTPリクエストを発行するオブジェクト。ブラウザを更新しない。
firefox, operaの場合は、単にXMLHttpRequestクラスのオブジェクトを作るだけだが、IE6はActiveXObjectとして作成しなければならない。
ActiveXObject :
オートメーション オブジェクトへの参照を有効にして返します。
newObj = new ActiveXObject(servername.typename[, location])
ActiveXのXMLHTTPのバージョン: Msxml2.XMLHTTP, Microsoft.XMLHTTP
new ActiveXObject(‘Msxml2.XMLHTTP’);
new ActiveXObject(‘Microsoft.XMLHTTP’);
「readyState」プロパティはサーバからデータを受信するたびに値の更新が行われます。よってこの値を監視することでデータの受信が完了したかどうかを判別できます。
「readyState」プロパティの値が変化すると「onreadystatechange」イベントが発生します。そこで「onreadystatechange」イベント発生する度にチェックする関数を呼び出し、データの受信が完了していたらデータを表示する。
function checkStatus(){
if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
alert(xmlHttp.responseText);
}
}
httpRequest = false;
if(window.XMLHttpRequest){
httpRequest = new XMLHttpReqeust();
httpRequest.overrideMimeType('text/xml');
} else if(window.ActiveXObject){
try {
httpRequest = new ActiveXObject('Msxml2.XMLHTTP');
} catch(e){
httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
}
}
function request(page){
if(page == "") return;
httpRequest.abort();
httpRequest.open('GET', 'http//webos-goodies.jp/archives/' + page+ '.html', true);
httpRequest.onreadystatechange = function(){
if(httpRequest.readyState == 4){
if(httpRequest.status == 200){
document.getElementById('page_text').value = httpRequest.responseText;
}
}
}
httpRequest.send(null);
}
xmlを取得する
<test> <sample>米ドル/円</sample> <sample>ユーロ円</sample> <sample>豪ドル/円</sample> </test>
<form>
<input type="button" name="submit" value="表示" id=button>
</form>
<div id="result"></div>
<script>
function createXMLHttpRequest() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest()
} else if (window.ActiveXObject) {
try {
return new ActiveXObject("Msxml2.XMLHTTP")
} catch (e) {
try {
new ActiveXObject("Microsoft.XMLHTTP")
} catch (e2) {
return null
}
}
} else {
return null
}
}
function send(){
var url = "sample.xml";
var request = createXMLHttpRequest();
request.open("GET", url, true);
request.onreadystatechange = function(){
if(request.readyState == 4 && request.status == 200){
var result = document.getElementById("result");
var xml = request.responseXML;
var nodes = xml.getElementsByTagName("sample");
var text = nodes[0].firstChild.nodeValue;
result.innerHTML =text;
}
}
request.send("");
}
window.onload = function(){
document.getElementById("button").onclick = send;
}
</script>

<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
#map {
height: 50%;
margin-top: 10px;
}
html, body {
height: 100%;
margin: 10px;
padding: 0;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 2,
center: {lat: -33.865427, lng: 151.196123},
mapTypeId: 'terrain'
});
var script = document.createElement('script');
script.src = 'https://developers.google.com/maps/documentation/javascript/examples/json/earthquake_GeoJSONP.js';
document.getElementsByTagName('head')[0].appendChild(script);
map.data.setStyle(function(feature) {
var magnitude = feature.getProperty('mag');
return {
icon: getCircle(magnitude)
};
});
}
function getCircle(magnitude) {
return {
path: google.maps.SymbolPath.CIRCLE,
fillColor: 'red',
fillOpacity: .2,
scale: Math.pow(2, magnitude) / 2,
strokeColor: 'white',
strokeWeight: .5
};
}
function eqfeed_callback(results) {
map.data.addGeoJson(results);
}
// // window.eqfeed_callback = function(results) {
// // for (var i = 0; i < results.features.length; i++) {
// // var coords = results.features[i].geometry.coordinates;
// // var latLng = new google.maps.LatLng(coords[1],coords[0]);
// // var marker = new google.maps.Marker({
// // position: latLng,
// // map: map
// // });
// // }
// }
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=notwatch&callback=initMap">
</script>
</body>
</html>

丹下健三でもみてみましょう。
まず、デフォルトのROADMAP
function initMap(){
var position = {lat: <?php echo $lat_a; ?>, lng: <?php echo $lng_a; ?>};
map = new google.maps.Map(document.getElementById('map'),{
center: position,
zoom: 14,
// mapTypeId: 'terrain'
});

続いて、satellite
大文字だと表示されません。

次は、hybrid

最後に、terrain

結論は、生で見よう。