• Google API 구글맵 아이콘 마커 + 말풍선 + 주소로 위경도 검색 + 거리별 원그리기 - v3

    2016. 11. 21.

    by. Yo.

    728x90



    구글맵 V3 기본 기능입니다..

    다음번에는 길찾기 등...animation 쪽으로..


    Test Url : http://www.uhoon.co.kr/test/613.html



    * 기능

     기본 맵

     아이콘 마커 (marker)

     말풍선 (infoWindow)

     주소로 위경도 검색하기 (geocoder)

     거리별 중심점 기준으로 원그리기 ( Circle )



    <!doctype html>
    <html>
    <head>
    	<meta charset="utf-8" />
    	<title>googlemap v3 </title>
    	<script src="http://code.jquery.com/jquery-latest.min.js"></script>
    	<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    </head>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var contentArray = [];
    var iConArray = [];
    var markers = [];
    var iterator = 0;
    var map;
    var geocoder;
    
    // infowindow contents 배열
     contentArray[0] = "Kay";
     contentArray[1] = "uhoons blog";
     contentArray[2] = "blog.uhoon.co.kr";
     contentArray[3] = "www.suvely.com";
     contentArray[4] = "www.babbabo.com";
     contentArray[5] = "blog.goodkiss.co.kr";
     contentArray[6] = "GG";
     contentArray[7] = "blog.goodkiss.co.kr";
     contentArray[8] = "II";
     contentArray[9] = "blog.goodkiss.co.kr";
    
    // marker icon 배열
     iConArray[0] = "http://google-maps-icons.googlecode.com/files/walking-tour.png";
     iConArray[1] = "http://google-maps-icons.googlecode.com/files/walking-tour.png";
     iConArray[2] = "http://google-maps-icons.googlecode.com/files/walking-tour.png";
     iConArray[3] = "http://google-maps-icons.googlecode.com/files/walking-tour.png";
     iConArray[4] = "http://google-maps-icons.googlecode.com/files/walking-tour.png";
     iConArray[5] = "http://google-maps-icons.googlecode.com/files/walking-tour.png";
     iConArray[6] = "http://google-maps-icons.googlecode.com/files/walking-tour.png";
     iConArray[7] = "http://google-maps-icons.googlecode.com/files/walking-tour.png";
     iConArray[8] = "http://google-maps-icons.googlecode.com/files/walking-tour.png";
     iConArray[9] = "http://google-maps-icons.googlecode.com/files/walking-tour.png";
    
    // 위경도 배열
    var markerArray = [ new google.maps.LatLng(40.3938,-3.7077)
    , new google.maps.LatLng(40.45038,-3.69803)
    , new google.maps.LatLng(40.45848,-3.69477)
    , new google.maps.LatLng(40.40672,-3.68327)
    , new google.maps.LatLng(40.43672,-3.62093)
    , new google.maps.LatLng(40.46725,-3.67443)
    , new google.maps.LatLng(40.43794,-3.67228)
    , new google.maps.LatLng(40.46212,-3.69166)
    , new google.maps.LatLng(40.41926,-3.70445)
    , new google.maps.LatLng(40.42533,-3.6844)
    ];
    
    function initialize() {
    	geocoder = new google.maps.Geocoder();
    
    	var mapOptions = {
    		zoom: 11,
    		mapTypeId: google.maps.MapTypeId.ROADMAP,
    		center: new google.maps.LatLng(40.4167754,-3.7037901999999576)
    	};
    
    	map = new google.maps.Map(document.getElementById('map'),mapOptions);
    
    	var populationOptions = {
    		strokeColor: '#000000',
    		strokeOpacity: 0.8,
    		strokeWeight: 2,
    		fillColor: '#808080',
    		fillOpacity: 0.5,
    		map: map,
    		center: new google.maps.LatLng(40.4167754,-3.7037901999999576) ,
    		radius: $("#radius").val()*1000
    	};
    	cityCircle = new google.maps.Circle(populationOptions);
    }
    
    // 주소 검색
    function showAddress() {
    	var address = $("#address").val();
    	geocoder.geocode( { 'address': address}, function(results, status) {
    		if (status == google.maps.GeocoderStatus.OK) {
    			map.setCenter(results[0].geometry.location);
    			var marker = new google.maps.Marker({
    				map: map,
    				position: results[0].geometry.location,
    				draggable: true
    			});
    
    			google.maps.event.addListener(marker, "dragend", function(event) {
    				var point = marker.getPosition();
    				$("#latitude").val(point.lat());
    				$("#longitude").val(point.lng());
    
    				var populationOptions = {
    					strokeColor: '#000000',
    					strokeOpacity: 0.8,
    					strokeWeight: 2,
    					fillColor: '#808080',
    					fillOpacity: 0.5,
    					map: map,
    					center: new google.maps.LatLng($("#latitude").val(),$("#longitude").val()) ,
    					radius: $("#radius").val()*1000
    				};
    				if (cityCircle)
    				{
    					cityCircle.setMap(null);
    				}
    				cityCircle = new google.maps.Circle(populationOptions);
    			});
    
    			var lat = results[0].geometry.location.lat();
    			var lng = results[0].geometry.location.lng();
    
    			$("#latitude").val(lat);
    			$("#longitude").val(lng);
    
    			var populationOptions = {
    				strokeColor: '#000000',
    				strokeOpacity: 0.8,
    				strokeWeight: 2,
    				fillColor: '#808080',
    				fillOpacity: 0.5,
    				map: map,
    				center: new google.maps.LatLng(lat,lng) ,
    				radius: $("#radius").val()*1000
    			};
    			if (cityCircle)
    			{
    				cityCircle.setMap(null);
    			}
    			cityCircle = new google.maps.Circle(populationOptions);
    
    		} else {
    			alert('Geocode was not successful for the following reason: ' + status);
    		}
    	});
    }
    
    // 드롭 마커 보기
    function viewMarker() {
    	for (var i = 0; i < markerArray.length; i++) {
    		setTimeout(function() {
    			addMarker();
    		}, i * 300);
    	}
    
    	var marker = new google.maps.Marker ({
    			position: new google.maps.LatLng(40.4167754,-3.7037901999999576),
    			map: map,
    			draggable: true
    		});
    
    	google.maps.event.addListener(marker, "dragend", function(event) {
    		var point = marker.getPosition();
    		$("#latitude").val(point.lat());
    		$("#longitude").val(point.lng());
    
    		var populationOptions = {
    			strokeColor: '#000000',
    			strokeOpacity: 0.8,
    			strokeWeight: 2,
    			fillColor: '#808080',
    			fillOpacity: 0.5,
    			map: map,
    			center: new google.maps.LatLng($("#latitude").val(),$("#longitude").val()) ,
    			radius: $("#radius").val()*1000
    		};
    		if (cityCircle)
    		{
    			cityCircle.setMap(null);
    		}
    		cityCircle = new google.maps.Circle(populationOptions);
    	});
    }
    
    // 마커 추가
    function addMarker() {
    
    	var marker = new google.maps.Marker({
    		position: markerArray[iterator],
    		map: map,
    		draggable: false,
    		icon: iConArray[iterator],
    		animation: google.maps.Animation.DROP
    	});
    	markers.push(marker);
    
    	var infowindow = new google.maps.InfoWindow({
          content: contentArray[iterator]
    	});
    
    	google.maps.event.addListener(marker, 'click', function() {
    		infowindow.open(map,marker);
    	});
    	iterator++;
    }
    
    // 중심 이동
    function fnLocation(lat, lng) {
    	myLocation = new google.maps.LatLng(lat, lng);
    	map.setCenter(myLocation);
    }
    
    //google.maps.event.addDomListener(window, 'load', initialize);
    
    $( window ).load(function() {
    	initialize();
    	viewMarker();
    });
    
    //-->
    </SCRIPT>
    <body>
    radius : <select id="radius" >
    	<option value="10" selected="selected">10Km</option>
    	<option value="5">5Km</option>
    </select>
    latitude : <input type="text" id="latitude" value="40.4167754"/>
    longitude: <input type="text" id="longitude" value="-3.7037901999999576"/>
    <div id="map" style="width:760px;height:400px;margin-top:20px;"></div>
    <label style="margin:3px 0 0 0;" for="address">address</label>
    <input type="text" id="address" name="address" style="margin:3px 0 0 5px;" value=""/>
    <input type="button" value="search" onclick="Javascript:showAddress();" />
    </body>
    </html>
    


    728x90

    댓글