2012-03-28 2 views
0

Guten Morgen/Nachmittag/Abend Jungs Hier ist die Sache. Ich mache eine Registrierung Gsp, dass es tatsächlich perfekt funktioniert, aber was ich tun muss, ist, nachdem ein Benutzer die Adresse einfügen, je nachdem fügen Sie einen Marker in der Karte mit der Google Maps API gemacht. Die Karte funktioniert tatsächlich gut und es hat bereits einen Marker, aber ich habe es mit dem Längen- und Breitengrad meiner Stadt geschrieben, jedes Register hat eine andere Adresse und dieser Marker sollte diese Adresse sein, aber ich finde einfach nicht den Weg dazu fügen Sie es direkt nach dem Einfügen der Adresse hinzu, ohne auf eine Schaltfläche zu klicken oder die Seite neu zu laden oder nichts, gleich nach dem Einfügen. dies ist der Code, den ich auf der gsp haben:Fügen Sie einen Punkt in der Karte hinzu, ohne zu einem Controller zurückzukehren oder die Seite neu zu laden

<html> 
    <head> 
     <meta name="layout" content="main"> 
     <g:set var="entityName" value="message(code: 'createPromo.label', default: 'CreatePromo')}" /> 
     <title><g:message code="default.create.label" args="[entityName]" /></title> 
     <meta name="viewport" content="initial-scale=1.0 user-scalable=no" /> 
     <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false ></script> 
     <g:javascript> 
      var directionService = new google.maps.DirectionsService(); 
      var directionDisplay; 
      function initialize(){ 
       var latlng = new google.maps.LatLng(6.20717, -75.565776); 
       directionDisplay = new google.maps.DirectionsRenderer(); 
       var settings = { 
        zoom: 15, 
        center: latlng, 
        mapTypeControl: true, 
        mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}, 
        navigationControl: true, 
        navigationControlOptions: {style: google.maps.NavigationControlStyle.MAP}, 
        mapTypeId: google.maps.MapTypeId.ROADMAP 
       }; 
       var map = new google.maps.Map(document.getElementById("map_canvas", settings); 
       directionDisplay.setMap(map); 
       /*var contentString = '<div id="content">'+ 
         '<div id="siteNotice">'+ 
         '<div>'+ 
         '<h1 id="firstHeading" class="firstHeading">Qtag Technologies</h1>'+ 
         '<div id="bodyContents">'+ 
         '<p>Put your address here</p>'+ 
         '<form id="mapping" action="#">'+ 
         '<input id="start" type="text" />'+ 
         '<input id="end" type="text" />'+ 
         '<input type="submit" value="add point" id="hola" /></form>'+ 
         '</div>'+ 
         '</div>'; 
       var infowindow = new google.maps.InfoWindow({ 
        content: contentString, 
        maxWidth: 300 
       });*/ 
       marker = new google.maps.Marker({ 
        map: map, 
        draggable: true, 
        animation: google.maps.Animation.DROP, 
        position: latlng 
       }); 
       function toogleBounce(){ 
        if(marker.getAnimation() != null){ 
         marker.setAnimation(null); 
        }else{ 
         marker.setAnimation(google.maps.Animation.BOUNCE); 
        } 
       } 
       google.maps.even.addListener(marker, 'click', toogleBounce); 
       function enviaDir(){ 
        document.mapping.submit(); 
       } 
       /*function calcRoute(){ 
        var start = document.getElementById("start").value; 
        var end = document.getElementById("end").value; 
        var request = { 
         origin: start, 
         destination: end, 
         travelMode: google.maps.DirectionsTravelMode.DRIVING 
        }; 
        directionsService.route(request, function(response, status){ 
         if(status == google.maps.DirectionsStatus.OK){ 
          directionDisplay.setDirections(response); 
         } 
        }); 
       }*/ 
       function submitFunction(){ 
        document.mapping.submit(); 
       } 
       /*$("#hola").live('click', function(w){ 
        w.preventDefault(); 
        calcRoute(); 
       }); 
       } 
     </g:javascript>          
    <head> 
    <body> 
     <a href="#create-createPromo" class="skip" tabindex="1"><g:message code="default.link.skip.label" default="Skipt to content&hellip;" /></a> 
     <div class="nav" role="navigation"> 
      <ul> 
       <li><a class="home" href="${createLink(uri: '/')}"><g:message code="default.home.label" /></a></li> 
       <li><g:link class="list" action="list"><g:message code="defaul.list.label" args="[entityName]" /></g:link></li> 
      </ul> 
     </div> 
     <div id="create-createPromo" class="content scaffold-create" role="main"> 
     <h1><g:message code="default.create.label" args="[entityName]" /></h1> 
     <g:if test="${flash.message}"> 
      <div class="message" role="status">${flash.message}</div> 
     </g:if> 
     <g:hasErrors bean="${createPromoInstance}"> 
     <ul class="errors" role="alert"> 
      <g:eachError bean="${createPromoInstance} var="error"> 
       <li <g:if test="${error in org.springframework.validation.FieldError}">data-field-id="${error.field}"</g:if>><g:message error="${error}" /></li> 
      </g:eachError> 
     </ul> 
     </g:hasErrors> 
     <g:form action="save" > 
      <div id="content1" > 
       <fieldset class="form"> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field:'storeName', 'error')} required"> 
         <label for="storeName"> 
          <g:message code="createPromo.storeName.label" default="Store Name" /> 
          <span class="required-indicator>*</span> 
         </label> 
         <g:textField name="storeName" value="${createPromoInstance?.storeName}" /> 
        </div> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field: 'activity', 'error')} required"> 
         <label for="activity"> 
          <g:message code="createPromo.activity.label" default="Activity" /> 
          <span class="required-indicator">*</span> 
         </label> 
         <g:select name="activity" from="${createPromoInstance.constraints.activity.inList}" value=${createPromoInstance?.activity" valueMessagePrefix="createPromo.activity" noSelection="['': '']" /> 
        </div> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field: 'cantArt', 'error')} required"> 
         <label for="cantArt"> 
          <g:message code="createPromo.art.label" default="cantArt" /> 
          <span class="required-indicator">*</span> 
         </label> 
         <g:textField name="cantArt" value="${createPromoInstance?.cantArt}" /> 
        </div> 
        <div class="fieldcontain ${hasErrors (bean: createPromoInstance, field: 'art', 'error')} required" > 
         <label for="art"> 
          <g:message code="createPromo.art.label" default="Art" /> 
          <span class="required-indicator">*</span> 
         </label> 
         <g:textField name="art" value="${createPromoInstance?.art}" /> 
        </div> 
        <div class="fieldcontain ${hasErrors (bean: createPromoInstance, field: 'wins', 'error')} "> 
         <label for="wins"> 
          <g:message code="createPromo.wins.label" default="Wins" /> 
          <span class="required-indicator">*</span> 
         </label> 
         <g:textField name="wins" value=${createPromoInstance?.wins" /> 
        </div> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field: 'telephone', 'error')}" > 
         <label for="telephone"> 
           <g:message code="createPromo.telephone.label" default="Telephone" /> 
           <span class="required-indicator">*</span> 
         </label> 
         <g:textField name="telephone" value="${createPromoInstance?.telephone" /> 
        </div> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field: 'address', 'error')}" > 
         <label for="address"> 
          <g:message code="createPromo.address.label" default="Address" /> 
          <span class="required-indicator">*</span> 
         </label> 
         <g:textField name="address" id="address" value="${createPromoInstance?.address" onblur="initialize();" /> 
        </div> 
       </fieldset> 
      </div> 
      <div id="content2"> 
       <div id="map_canvas" style="width:300px; height: 200px; "></div> 
      </div> 
      <fieldset class="buttons"> 
       <g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', defautl: 'Create')}" /> 
      </fieldset> 
     </g:form> 
     </div> 
    </body> 

</html> 

ich die onblur Funktion eingefügt, aber es hilft mir nicht, ich weiß nicht, wie die Adresse nennen und ihn in einen Marker umwandeln, könnte jemand helfen mir bitte?

Antwort

0

Am Ende des Tages beantworte ich immer meine eigenen Fragen, denn kein Körper hilft mir hier! Dies ist der Code dessen, was ich getan habe. Ich wollte einen Punkt in der Karte hinzufügen, ohne auf eine Schaltfläche zu klicken, gleich nachdem jemand die Adresse eingegeben hat. Ich habe einige Fehler gefunden, denn wenn ich nur die Zahl addiere (du musst wissen, dass meine Stadt und mein Land Medellín - Kolumbien ist), wird der Marker irgendwo anders platziert, aber nicht in meinem Land. Also musste ich 2 weitere Felder hinzufügen, um die Stadt und das Land auszuwählen (es wird sich später ändern, weitere Städte und Länder hinzufügen, für jetzt hat es nur eine Stadt und ein Land), und jetzt funktioniert es perfekt. Nun, hier ist der Code für euch, wenn Ihr es braucht! Ich hoffe, es wird für jeden nützlich sein. :)

<html> 
    <head> 
     <meta name="layout" content="main"> 
     <g:set var="entityName" value="${message (code: 'createPromo.label', default: 'CreatePromo')}" /> 
     <title><g:message code="default.create.label" args="[entityName]" /></title> 
     <meta name="viewport" content="initial-scale=1.0 user-scalable=no" /> 
     <script type="text/javascript src="http://maps.google.com/maps/api/js?sensor=false" ></script> 
     <g:javascript> 
       var map; 
       var geocoder; 
       function initialize(){ 
        geocoder = new google.maps.Geocoder(); 
        var latlng = new google.maps.LatLng(6.20717, -75.565776); 
        var settings = { 
         zoom: 15, 
         center: latlng, 
         mapTypeControl: true, 
         mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}, 
         navigationControl: true, 
         navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL}, 
         mapTypeId: google.maps.MapTypeId.ROADMAP 
        }; 
        map = new google.maps.Map(document.getElementById("map_canvas"), settings); 
       } 
       function codeAddress(){ 
        var address = document.getElementById("address").value; 
        var city = document.getElementById("city").value; 
        var country = document.getElementById("country").value; 
        geocoder.geocode({'address': address + ' ' + city + ' - ' + country}, function(results, status){ 
         if(status == google.maps.GeocoderStatus.OK){ 
          map.setCenter(results[0].geometry.location); 
          var maker = new google.maps.Marker({ 
           map: map, 
           position: results[0].geometry.location        
          }); 
         }else{ 
          alert ("Geocoder was not successful for the following reason: " + status); 
         } 
        }); 
       } 
     </g:javascript>     
    </head> 
    <body> 
     <a href="#create-createPromo" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content&hellip;" /></a> 
     <div class="nave" role="navigation"> 
      <ul> 
       <li><a class="home" href="${createLink(uri: '/')}><g:message code="default.home.label" /></a></li> 
       <li><g:link class="list" action="list"><g:message code="default.list.label" args="[entityName]" /></g:link></li> 
      </ul> 
     </div> 
     <div id="create-createPromo" class="content scaffold-create" role="main"> 
      <h1><g:message code="default.create.label" args="[entityName]" /></h1> 
      <g:if test="${flash.message}" > 
       <div class="message" role="status">${flash.message}</div> 
      </g:if> 
      <g:hasErrors bean="{createPromoInstance}"> 
      <ul class="errors" role="alert"> 
       <g:eachError bean="${createPromoInstance} var="error"> 
        <li <g:if test="{error in org.springframework.validation.FieldError}">data-field-id=${error.field}"</g:if>><g:message error="${error}" /></li> 
       </g:eachError> 
      </ul> 
      </g:hasErrors> 
      <g:form action="save"> 
       <fieldset class="form"> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field: 'storeName', 'error')} "> 
          <label for="storeName"> 
           <g:message code="createPromo.storeName.label" default="Store Name" /> 
          </label> 
          <g:textField name="storeName" value="${createPromoInstance?.storeName}" id="storeName" /> 
        </div> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field: 'activity', 'error')} "> 
         <label for="activity"> 
          <g:message code="createPromo.activity.label default="Activity" /> 
         </label> 
         <g:select name="activity" from="${createPromoInstance.constraints.activity.inList}" value="${createPromoInstance?.activity}" valueMessagePrefix="createPromo.activity" noSelection="['':'']" /> 
        </div> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field: 'cantArt', 'error')} required"> 
          <label for="canArt"> 
           <g:message code="createPromo.canArt.label" default="cantArt" /> 
           <span class="required-indicator>*</span> 
          </label> 
          <g:textField name="cantArt" value="${createPromoInstance?.cantArt" id="cantArt" /> 
        </div> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field:'art', 'error')} "> 
          <label for="art"> 
           <g:message code="createPromo.art.label" default="Art" /> 
          </label> 
          <g:textField name="art" value="${createPromoInstance?.art" /> 
        </div> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field: 'wins', 'error')} "> 
          <label for="wins"> 
           <g:message code="createPromo.wins.label" default="Wins" /> 
          </label> 
          <g:textField name="wins" value="${createPromoInstance?.wins}" /> 
        </div> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field: 'telephone', 'error')}" > 
          <label for="telephone"> 
           <g:message code="createPromo.telephone.label" default="Telephone" /> 
          </label> 
          <g:textField name="telephone" value="${createPromoInstance?.telephone}" /> 
        </div> 
        <div class="fielcontain ${hasErrors(bean: createPromoInstance, field: 'city', 'error')} "> 
          <label for="city"> 
           <g:message code="createPromo.city.label" default="City" /> 
          </label> 
          <g:select name="city" id="city" from="${createPromoInstance.constraints.city.inList}" value="${createPromoInstance?.city}" valueMessagePrefix="createPromo.city" nonSelection="['':'']" /> 
        </div> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field: 'country', 'error' })" > 
          <label for="country"> 
           <g:message code="createPromo.country.label" defuatl="Country" /> 
          </label> 
          <g:select name="country" id="country" from="${createPromoInstance.constraints.country,inList}" value="${createPromoInstance?.country}" valueMessagePrefix="createPromo.country" nonSelection="['':'']" /> 
        </div> 
        <div class="fieldcontain ${hasErrors(bean: createPromoInstance, field: 'address', 'error' })" > 
          <lable for="address"> 
           <g:message code="createPromo.address.label" default="Address" /> 
          </label> 
          <g:textField name="address" id="address" value="${createPromoInstance?.address}" onblur="codeAddress()" /> 
        </div> 
        <div id="map_canvas" style="width: 300px; height: 200px; ></div> 
       </fieldset> 
      </g:form> 
     </div> 
    </body> 
</html> 
Verwandte Themen