สอบถาม google map
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถาม google map
สอบถาม google map
รบกวนหน่อยคะ พอดีหนูทำ google map มันแสดงแผนที่แล้ว และแสดงหมุดแต่ยังไม่แสดง ภาพบนหมุดสีแดง ไม่แสดงภาพในแต่ละที่
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>map</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<style type="text/css">
html { height: 100% }
body {
height:100%;
margin:0;padding:0;
font-family:tahoma, "Microsoft Sans Serif", sans-serif, Verdana;
font-size:0px;
}
/* css กำหนดความกว้าง ความสูงของแผนที่ */
#map_canvas {
width:1024px;
height:620px;
margin:auto;
margin-top:5px;
}
</style>
</head>
<br>
<div style="margin:auto:width:80%;">
<div id="map_canvas"></div>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
var map; // กำหนดตัวแปร map ไว้ด้านนอกฟังก์ชัน เพื่อให้สามารถเรียกใช้งาน จากส่วนอื่นได้
var GGM; // กำหนดตัวแปร GGM ไว้เก็บ google.maps Object จะได้เรียกใช้งานได้ง่ายขึ้น
var my_Marker=[]; // สำหรับปักหมุด
var my_leant=[];
var obj_marker; // สำหรับเก็บค่าพิกัดและข้อมูลจากฐานข้อมูล
var limit_show=100; // กำหนดแสดงรายการไม่เกิน
var infowindow=[]; // กำหนดตัวแปรสำหรับเก็บตัว popup แสดงรายละเอียดสถานที่
var infowindowTmp; // กำหนดตัวแปรสำหรับเก็บลำดับของ infowindow ที่เปิดล่าสุด
function initialize() { // ฟังก์ชันแสดงแผนที่
GGM=new Object(google.maps); // เก็บตัวแปร google.maps Object ไว้ในตัวแปร GGM
// กำหนดจุดเริ่มต้นของแผนที่
var my_Latlng = new GGM.LatLng(9.0968957,99.3617589);
// กำหนด DOM object ที่จะเอาแผนที่ไปแสดง ที่นี้คือ div id=map_canvas
var my_DivObj=$("#map_canvas")[0];
// กำหนด Option ของแผนที่
var myOptions = {
zoom: 8, // กำหนดขนาดการ zoom
center: my_Latlng , // กำหนดจุดกึ่งกลาง
mapTypeId:GGM.MapTypeId.ROADMAP, // กำหนดรูปแบบแผนที่
mapTypeControlOptions:{ // การจัดรูปแบบส่วนควบคุมประเภทแผนที่
position:GGM.ControlPosition.TOP, // จัดตำแหน่ง
style:GGM.MapTypeControlStyle.DROPDOWN_MENU // จัดรูปแบบ style
}
};
map = new GGM.Map(my_DivObj,myOptions);// สร้างแผนที่และเก็บตัวแปรไว้ในชื่อ map
// ดึงข้อมูลจากฐานข้อมูลที่สร้างมาในรูปแบบไฟล์ json
$.getJSON( "gps.php", function( data ) {
obj_marker=data; // เก็บค่าไว้ในตัวแปร ไว้ใช้งาน
var m=0;
$.each(obj_marker,function(i,k){ // วนลูปแสดงการปักหมุด
if(m<limit_show){ // ปักหมดได้ไม่เกิน limit_show
var markerLatLng=new GGM.LatLng(obj_marker[i].latitude,obj_marker[i].longitude);
my_Marker[i] = new GGM.Marker({ // สร้างตัว marker
position:markerLatLng, // กำหนดไว้ที่เดียวกับจุดกึ่งกลาง
map: map, // กำหนดว่า marker นี้ใช้กับแผนที่ชื่อ instance ว่า map
title:obj_marker[i].province_name // แสดง title เมื่อเอาเมาส์มาอยู่เหนือ
});
// ส่วนของ infowindow สำหรับทดสอบ ดึงจากชื่อ titile
infowindow[i] = new GGM.InfoWindow({// สร้าง infowindow ของแต่ละ marker เป็นแบบ array
content: my_Marker[i].getTitle() // ดึง title ในตัว marker มาแสดงใน infowindow
});
var mapCircle = new GGM.Circle({ // สร้างตัว circle
strokeColor: "#CC0000", // สีของเส้นสัมผัส หรือสีขอบโดยรอบ
strokeOpacity: 0.3, // ความโปร่งใส ของสีขอบโดยรอบ กำหนดจาก 0.0 - 0.1
strokeWeight: 1, // ความหนาของสีขอบโดยรอบ เป็นหน่วย pixel
fillColor: "#FF0000", // สีของวงกลม circle
fillOpacity: 0.08, // ความโปร่งใส กำหนดจาก 0.0 - 0.1
map: map, // กำหนดว่า circle นี้ใช้กับแผนที่ชื่อ instance ว่า map
center: markerLatLng, // ตำแหน่งศูนย์กลางของวลกลม ในที่นี้ใช้ตำแหน่งเดียวกับ ตัว marker
radius: 0,
});
// กรณีนำไปประยุกต์ ดึงข้อมูลจากฐานข้อมูลมาแสดง
// infowindow[i] = new GGM.InfoWindow({
// content:$.ajax({
// url:'placeDetail.php',//ใช้ ajax ใน jQuery ดึงข้อมูล
// data:'placeID='+obj_marker[i].province_id, // ส่งค่าตัวแปร ไปดึงข้อมูลจากฐานข้อมูล
// async:false
// }).responseText
// });
// ส่วนของการกำหนด ให้เมื่อคลิกแต่ละ marker
GGM.event.addListener(my_Marker[i],"click", function(){ // เมื่อคลิกตัว marker แต่ละตัว
if(infowindowTmp){ // ให้ตรวจสอบว่ามี infowindow ตัวไหนเปิดอยู่หรือไม่
infowindow[infowindowTmp].close(); // ถ้ามีให้ปิด infowindow ที่เปิดอยู่
}
infowindow[i].open(map,my_Marker[i]); // แสดง infowindow ของตัว marker ที่คลิก
infowindowTmp=i; // เก็บ infowindow ที่เปิดไว้อ้างอิงใช้งาน
});
m++;
}
});
});
// กำหนด event ให้กับตัวแผนที่ เมื่อมีการเปลี่ยนแปลงการ zoom
GGM.event.addListener(map, 'zoom_changed', function() {
// วนลูปล้างค่าเก่า ก่อนสร้างปักหมุดใหม่
if(my_Marker.length>0){
for(i=0;i<my_Marker.length;i++){
my_Marker[i].setMap(null);
}
}
var m=0;
var map_zoom=map.getZoom();
// zoom เท่าไหร่ แสดงเท่าไหร่ เงื่อนไขกำหนดตามต้องการ
if(map_zoom<=6){
limit_show=10;
}else if(map_zoom<=7){
limit_show=30;
}else if(map_zoom<=8){
limit_show=40;
}else if(map_zoom<=20){
limit_show=100;
}else{
limit_show=10;
}
$.each(obj_marker,function(i,k){ // วนลูปแสดงการปักหมุด
if(m<limit_show){ // ปักหมดได้ไม่เกิน limit_show
var markerLatLng=new GGM.LatLng(obj_marker[i].latitude,obj_marker[i].longitude);
my_Marker[i] = new GGM.Marker({ // สร้างตัว marker
position:markerLatLng, // กำหนดไว้ที่เดียวกับจุดกึ่งกลาง
map: map, // กำหนดว่า marker นี้ใช้กับแผนที่ชื่อ instance ว่า map
title:obj_marker[i].province_name // แสดง title เมื่อเอาเมาส์มาอยู่เหนือ
});
// ส่วนของ infowindow สำหรับทดสอบ ดึงจากชื่อ titile
infowindow[i] = new GGM.InfoWindow({// สร้าง infowindow ของแต่ละ marker เป็นแบบ array
content: my_Marker[i].getTitle() // ดึง title ในตัว marker มาแสดงใน infowindow
});
// กรณีนำไปประยุกต์ ดึงข้อมูลจากฐานข้อมูลมาแสดง
infowindow[i] = new GGM.InfoWindow({
content:$.ajax({
url:'placeDetail.php',//ใช้ ajax ใน jQuery ดึงข้อมูล
data:'placeID='+obj_marker[i].ID, // ส่งค่าตัวแปร ไปดึงข้อมูลจากฐานข้อมูล
async:false
}).responseText
});
// ส่วนของการกำหนด ให้เมื่อคลิกแต่ละ marker
GGM.event.addListener(my_Marker[i],"click", function(){ // เมื่อคลิกตัว marker แต่ละตัว
if(infowindowTmp){ // ให้ตรวจสอบว่ามี infowindow ตัวไหนเปิดอยู่หรือไม่
infowindow[infowindowTmp].close(); // ถ้ามีให้ปิด infowindow ที่เปิดอยู่
}
infowindow[i].open(map,my_Marker[i]); // แสดง infowindow ของตัว marker ที่คลิก
infowindowTmp=i; // เก็บ infowindow ที่เปิดไว้อ้างอิงใช้งาน
});
m++;
}
});
});
}
$(function(){
$("<script/>", {
"type": "text/javascript",
src: "http://maps.google.com/maps/api/js?key=AIzaSyACYygked7&language=th®ion=TH&v=3.2&sensor=false&callback=initialize"
}).appendTo("body");
});
</script>
</body>
</html>

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
file gps
<?php
header("Content-type:application/json; charset=UTF-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// ส่วนติดต่อกับฐานข้อมูล
mysql_connect("localhost","","") or die("Cannot connect the Server");
mysql_select_db("test2") or die("Cannot select database");
mysql_query("set character set utf8");
?>
<?php
$q="SELECT * FROM dataphoto";
$qr=mysql_query($q);
while($rs=mysql_fetch_array($qr)){
$json_data[]=array(
"ID"=>$rs['ID'],
"latitude"=>$rs['Lat'],
"longitude"=>$rs['Lon'],
"Photo"=>$rs['Photoname'],
"Date"=>$rs['Date'],
);
}
$json= json_encode($json_data);
echo $json;
![]()

ความคิดเห็นที่
2
ลองทำให้ข้อมูล จากไฟล์่ json ที่ดึงจาก ไฟล์ gps แสดงใน infowindow ก่อน
จากนั้นค่อยเช็คว่า กำหนด path รูปเข้าไปถูกต้องไหม
>>> อัพเดท >>> 30-03-2017
------------------------------------------
จากนั้นค่อยเช็คว่า กำหนด path รูปเข้าไปถูกต้องไหม
>>> อัพเดท >>> 30-03-2017
------------------------------------------
1 2 3 4 5 6 7 8 9 | my_Marker[i] = new GGM.Marker({ // สร้างตัว marker position:markerLatLng, // กำหนดไว้ที่เดียวกับจุดกึ่งกลาง map: map, // กำหนดว่า marker นี้ใช้กับแผนที่ชื่อ instance ว่า map title:obj_marker[i].Photo // แสดง title เมื่อเอาเมาส์มาอยู่เหนือ }); // ส่วนของ infowindow สำหรับทดสอบ ดึงจากชื่อ titile infowindow[i] = new GGM.InfoWindow({ // สร้าง infowindow ของแต่ละ marker เป็นแบบ array content: obj_marker[i].Photo // ดึง title ในตัว marker มาแสดงใน infowindow }); |

ความคิดเห็นที่
3
ทำได้แล้วคะ ขอบคุณคะ

ขอบคุณทุกการสนับสนุน
![]()