Javascript 谷歌地图v3“;“如何在地图中单击创建标记”;

Javascript 谷歌地图v3“;“如何在地图中单击创建标记”;,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我需要在地图中单击创建标记,谢谢:) v3地理编码结果 html,正文 { 身高:100% } #地图 { 宽度:100%; 高度:512px; } var renderGeolocalizacion=函数() { var地理编码器,map,markersArray=[] var __construct = function() { var w_o; if(typeof(window.onload)=='function'

我需要在地图中单击创建标记,谢谢:)

v3地理编码结果 html,正文 { 身高:100% }
#地图 { 宽度:100%; 高度:512px; }
var renderGeolocalizacion=函数() { var地理编码器,map,markersArray=[]

        var __construct = function()
        {
          var w_o;
          if(typeof(window.onload)=='function')
              w_o = window.onload;

          window.onload = function()
          {
            if(typeof(w_o)=='function')
                w_o();

            var mapOpts =
            {
              zoom: 8,
              center: new google.maps.LatLng(43.2569629,-2.9234409),
              mapTypeId: google.maps.MapTypeId.ROADMAP,
              scaleControl: true
            }

            maps.Map(document.getElementById("map"), mapOpts);
            google.maps.event.addListener(map, 'zoom_changed', function()
            {
                document.getElementById('zoom').value = map.getZoom(); 
            });    
            google.maps.event.addListener(map, 'click', function(e)
            {
                clearOverlays();
                var marker = new google.maps.Marker(
                {
                    position: e.latLng,
                    map: map,
                    draggable: true
                });
                markersArray[0] = marker;
                var position = marker.getPosition();
                geocode(marker.getPosition().b+", "+marker.getPosition().c, true);                                                                                
            });

            /**
              * geocoder
              */
            geocoder = new google.maps.Geocoder();
            document.getElementById('geolocation').onsubmit = function()
            {
                clearOverlays();
                geocode(document.getElementById('search-field').value);
                return false;
            };                                        
          };                                                                                                                                
        };
        var in_array = function(value, array, strict)
        {
            for(var i in array)
                if(strict)
                    if(array[i]===value)
                        return true;
                else
                    if(array[i]==value)
                        return true;
            return false;                                    
        };

        var clearOverlays = function()
        {
            if (markersArray)
                for (i in markersArray)
                    markersArray[i].setMap(null);
        };    

        var geocode = function(addr, mark)
        {
            geocoder.geocode(
            {
              'address': addr,
              'language': 'ES',
              'region': 'ES'                                
            }, geocodeResult);
        };
        var geocodeResult = function(response, status)
        {
            if (status == google.maps.GeocoderStatus.OK && response[0])
            {
                clearOverlays();
                response = response[0];                                    
                map.setCenter(response.geometry.location);
                var marker = new google.maps.Marker(
                {
                    map: map, 
                    position: response.geometry.location,
                    draggable: true
                });    
                google.maps.event.addListener(marker, 'mouseup', function(event)
                {                                    
                    var position = marker.getPosition();
                    geocode(marker.getPosition().b+", "+marker.getPosition().c);                                         
                });                                                                                                                
                markersArray[0] = marker;
                getInfo(response);                                                                                                                                            
            }                                                                                                   
        };
        var getInfo = function(response)
        {
            var tmp = {};
            var allowed_types = ['locality', 'administrative_area_level_2', 'administrative_area_level_1', 'country', 'postal_code'];
            for(var i in response.address_components)
            {
                var found = false;
                for(var j in response.address_components[i].types)
                {
                    if(found)
                    {
                        found=false;
                        continue;
                    }
                    if (in_array(response.address_components[i].types[j]), allowed_types, true)
                    {
                        found = true;
                        tmp[response.address_components[i].types[j]] = response.address_components[i].long_name;
                        console.log(response.address_components[i].types[j] + ": " + response.address_components[i].long_name);
                    }                                                                            
                }                                                                
            }

            document.getElementById('localidad').value = tmp.locality;
            document.getElementById('provincia').value = tmp.administrative_area_level_2;
            document.getElementById('comunidad').value = tmp.administrative_area_level_1;
            document.getElementById('pais').value = tmp.country;
            document.getElementById('codigo_postal').value = tmp.postal_code;

            document.getElementById('longitud').value = response.geometry.location.c;
            document.getElementById('latitud').value = response.geometry.location.b;

            document.getElementById('zoom').value = map.getZoom();                        
        };                                                                                                                
        __construct();
    };    
    new renderGeolocalizacion();                    
    //--> 
    </script>            
    </head>
    <body>
    <div>
        <form id="geolocation">
            <label for="search-field">Search field</label><input type="text" size="40" id="search-field" name="search-field" title="Placename or address"/>
            <input type="submit" value="Search" title="Or hit [Enter] on keyboard"/>                
            <input type="hidden" id="localidad" name="localidad" value="" />
            <input type="hidden" id="provincia" name="provincia" value="" />
            <input type="hidden" id="comunidad" name="comunidad" value="" />
            <input type="hidden" id="pais" name="pais" value="" />
            <input type="hidden" id="codigo_postal" name="codigo_postal" value="" />
            <input type="hidden" id="longitud" name="longitud" value="" />                
            <input type="hidden" id="latitud" name="latitud" value="" />
            <input type="hidden" id="zoom" name="zoom" value="" />                
        </form>
    </div>
    <div id="map">
    </div>
</body>
var\uuuu construct=function()
{
var w_o;
if(typeof(window.onload)=='function')
w_o=窗口加载;
window.onload=函数()
{
if(类型of(w_o)=“函数”)
w_o();
var mapOpts=
{
缩放:8,
中心:新google.maps.LatLng(43.2569629,-2.9234409),
mapTypeId:google.maps.mapTypeId.ROADMAP,
scaleControl:对
}
Map.Map(document.getElementById(“Map”)、mapOpts);
google.maps.event.addListener(映射'zoom_changed',函数()
{
document.getElementById('zoom')。value=map.getZoom();
});    
google.maps.event.addListener(映射,'click',函数(e)
{
clearOverlays();
var marker=new google.maps.marker(
{
职位:e.latLng,
地图:地图,
德拉格布尔:是的
});
markersArray[0]=标记器;
var position=marker.getPosition();
地理编码(marker.getPosition().b+,“+marker.getPosition().c,true);
});
/**
*地理编码器
*/
geocoder=新的google.maps.geocoder();
document.getElementById('geolocation')。onsubmit=function()
{
clearOverlays();
地理编码(document.getElementById('search-field')。值);
返回false;
};                                        
};                                                                                                                                
};
数组中的变量=函数(值、数组、严格)
{
for(数组中的变量i)
如果(严格)
if(数组[i]==值)
返回true;
其他的
if(数组[i]==值)
返回true;
返回false;
};
var clearOverlays=函数()
{
if(markersArray)
for(markersArray中的i)
markersArray[i].setMap(空);
};    
变量地理编码=功能(地址、标记)
{
地理编码(
{
“地址”:地址,
“语言”:“ES”,
“区域”:“ES”
},地理编码结果);
};
var geocodeResult=函数(响应、状态)
{
if(status==google.maps.GeocoderStatus.OK&&response[0])
{
clearOverlays();
响应=响应[0];
地图设置中心(响应、几何、位置);
var marker=new google.maps.marker(
{
地图:地图,
位置:response.geometry.location,
德拉格布尔:是的
});    
google.maps.event.addListener(标记'mouseup',函数(事件)
{                                    
var position=marker.getPosition();
地理编码(marker.getPosition().b+,“+marker.getPosition().c);
});                                                                                                                
markersArray[0]=标记器;
getInfo(响应);
}                                                                                                   
};
var getInfo=函数(响应)
{
var tmp={};
允许的变量类型=[“地区”、“行政区”级别“2”、“行政区”级别“1”、“国家”、“邮政编码”];
for(响应中的var i.address\u组件)
{
var=false;
for(响应中的var j.address_components[i].types)
{
如果(找到)
{
发现=错误;
继续;
}
if(在数组中(response.address\u components[i].types[j]),允许的\u类型,true)
{
发现=真;
tmp[response.address\u components[i].types[j]]=response.address\u components[i].long\u name;
log(response.address\u components[i].类型[j]+“:”+response.address\u components[i].长名称);
}                                                                            
}                                                                
}
document.getElementById('localidad')。value=tmp.locality;
document.getElementById('provincia')。value=tmp.administration\u area\u level\u 2;
document.getElementById(
var marker;

google.maps.event.addListener(map, 'click', function(e) {
    if ( !marker ) {
        marker = new google.maps.Marker({ map: map });
    }

    marker.setPosition(e.latLng);
});
        var __construct = function()
        {
          var w_o;
          if(typeof(window.onload)=='function')
              w_o = window.onload;

          window.onload = function()
          {
            if(typeof(w_o)=='function')
                w_o();

            var mapOpts =
            {
              zoom: 8,
              center: new google.maps.LatLng(43.2569629,-2.9234409),
              mapTypeId: google.maps.MapTypeId.ROADMAP,
              scaleControl: true
            }

            maps.Map(document.getElementById("map"), mapOpts);
            google.maps.event.addListener(map, 'zoom_changed', function()
            {
                document.getElementById('zoom').value = map.getZoom(); 
            });    
            google.maps.event.addListener(map, 'click', function(e)
            {
                clearOverlays();
                var marker = new google.maps.Marker(
                {
                    position: e.latLng,
                    map: map,
                    draggable: true
                });
                markersArray[0] = marker;
                var position = marker.getPosition();
                geocode(marker.getPosition().b+", "+marker.getPosition().c, true);                                                                                
            });

            /**
              * geocoder
              */
            geocoder = new google.maps.Geocoder();
            document.getElementById('geolocation').onsubmit = function()
            {
                clearOverlays();
                geocode(document.getElementById('search-field').value);
                return false;
            };                                        
          };                                                                                                                                
        };
        var in_array = function(value, array, strict)
        {
            for(var i in array)
                if(strict)
                    if(array[i]===value)
                        return true;
                else
                    if(array[i]==value)
                        return true;
            return false;                                    
        };

        var clearOverlays = function()
        {
            if (markersArray)
                for (i in markersArray)
                    markersArray[i].setMap(null);
        };    

        var geocode = function(addr, mark)
        {
            geocoder.geocode(
            {
              'address': addr,
              'language': 'ES',
              'region': 'ES'                                
            }, geocodeResult);
        };
        var geocodeResult = function(response, status)
        {
            if (status == google.maps.GeocoderStatus.OK && response[0])
            {
                clearOverlays();
                response = response[0];                                    
                map.setCenter(response.geometry.location);
                var marker = new google.maps.Marker(
                {
                    map: map, 
                    position: response.geometry.location,
                    draggable: true
                });    
                google.maps.event.addListener(marker, 'mouseup', function(event)
                {                                    
                    var position = marker.getPosition();
                    geocode(marker.getPosition().b+", "+marker.getPosition().c);                                         
                });                                                                                                                
                markersArray[0] = marker;
                getInfo(response);                                                                                                                                            
            }                                                                                                   
        };
        var getInfo = function(response)
        {
            var tmp = {};
            var allowed_types = ['locality', 'administrative_area_level_2', 'administrative_area_level_1', 'country', 'postal_code'];
            for(var i in response.address_components)
            {
                var found = false;
                for(var j in response.address_components[i].types)
                {
                    if(found)
                    {
                        found=false;
                        continue;
                    }
                    if (in_array(response.address_components[i].types[j]), allowed_types, true)
                    {
                        found = true;
                        tmp[response.address_components[i].types[j]] = response.address_components[i].long_name;
                        console.log(response.address_components[i].types[j] + ": " + response.address_components[i].long_name);
                    }                                                                            
                }                                                                
            }

            document.getElementById('localidad').value = tmp.locality;
            document.getElementById('provincia').value = tmp.administrative_area_level_2;
            document.getElementById('comunidad').value = tmp.administrative_area_level_1;
            document.getElementById('pais').value = tmp.country;
            document.getElementById('codigo_postal').value = tmp.postal_code;

            document.getElementById('longitud').value = response.geometry.location.c;
            document.getElementById('latitud').value = response.geometry.location.b;

            document.getElementById('zoom').value = map.getZoom();                        
        };                                                                                                                
        __construct();
    };    
    new renderGeolocalizacion();                    
    //--> 
    </script>            
    </head>
    <body>
    <div>
        <form id="geolocation">
            <label for="search-field">Search field</label><input type="text" size="40" id="search-field" name="search-field" title="Placename or address"/>
            <input type="submit" value="Search" title="Or hit [Enter] on keyboard"/>                
            <input type="hidden" id="localidad" name="localidad" value="" />
            <input type="hidden" id="provincia" name="provincia" value="" />
            <input type="hidden" id="comunidad" name="comunidad" value="" />
            <input type="hidden" id="pais" name="pais" value="" />
            <input type="hidden" id="codigo_postal" name="codigo_postal" value="" />
            <input type="hidden" id="longitud" name="longitud" value="" />                
            <input type="hidden" id="latitud" name="latitud" value="" />
            <input type="hidden" id="zoom" name="zoom" value="" />                
        </form>
    </div>
    <div id="map">
    </div>
</body>